home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / asm / TBSource.lha / ShellTerm / ST1.17.S < prev    next >
Text File  |  1993-07-02  |  59KB  |  2,986 lines

  1. *************************************************
  2. *                        *
  3. *           (C)opyright 1992-93        *
  4. *                        *
  5. *        by Tomi Blinnikka        *
  6. *                        *
  7. *    Don't try to understand the code    *
  8. *                        *
  9. * Version 0.01    28/05/1992            *
  10. *     -0.99ö                    *
  11. *                        *
  12. * Version 1.00    04/08/1992            *
  13. *                        *
  14. * BUGS: Lots! No phonebook.            *
  15. *                        *
  16. * Version 1.01    05/08/1992            *
  17. *                        *
  18. * BUGS: Some. Dialer problems.            *
  19. *                        *
  20. * Version 1.02    06/08/1992            *
  21. *                        *
  22. * BUGS: Less. Still dialer problems.        *
  23. *                        *
  24. * Version 1.03    08/08/1992            *
  25. *                        *
  26. * BUGS:                     *
  27. *                        *
  28. * Version 1.04    11/08/1992            *
  29. *                        *
  30. * Released                    *
  31. *                        *
  32. * BUGS: Send CTRL-P didn't work            *
  33. *                        *
  34. * Version 1.05    15/08/1992            *
  35. *                        *
  36. * Version 1.06    28/08/1992            *
  37. *                        *
  38. * Added prefs file and swap BS & DEL        *
  39. * See docs for more info            *
  40. *                        *
  41. * Version 1.07    30/08/1992            *
  42. *                        *
  43. * Version 1.08    04/09/1992            *
  44. *                        *
  45. * Added cursor remap                *
  46. *                        *
  47. * Version 1.09    06/09/1992            *
  48. *                        *
  49. * Version 1.10    20/10/1992            *
  50. *                        *
  51. * Hopefully fixed bug in FindWord        *
  52. * Added: PublicPorts                *
  53. *                        *
  54. * Version 1.11    13/11/1992 <-Friday the 13th    *
  55. *                        *
  56. * Version for Mika Henttinen            *
  57. *                        *
  58. * Version 1.12    30/12/1992            *
  59. *                        *
  60. * Changed parser to Commodore's own ReadArgs    *
  61. *                        *
  62. * Version 1.13    02/01/1993            *
  63. *                        *
  64. * Added 'Execute Command'            *
  65. *                        *
  66. * Version 1.14    06/02/1993            *
  67. *                        *
  68. * Fixed bug at start clearing CLI pointer's    *
  69. * last byte                    *
  70. *                        *
  71. * Version 1.15    10/02/1993            *
  72. *                        *
  73. * Made sure that the Modify Mode in the dialer    *
  74. * is turned off when the dialer is quit        *
  75. *                        *
  76. * Version 1.16    24/03/1993            *
  77. *                        *
  78. * Fixed bug with opening device!        *
  79. *                        *
  80. * Version 1.17    25/03/1993            *
  81. *                        *
  82. * Added optional port                *
  83. *                        *
  84. *************************************************
  85.  
  86.     INCLUDE    "JMPLibs.i"
  87.     INCLUDE    "exec/types.i"
  88.     INCLUDE    "exec/nodes.i"
  89.     INCLUDE    "exec/lists.i"
  90.     INCLUDE    "exec/ports.i"
  91.     INCLUDE    "exec/memory.i"
  92.     INCLUDE    "exec/devices.i"
  93.     INCLUDE    "exec/io.i"
  94.     INCLUDE    "exec/tasks.i"
  95.     INCLUDE    "libraries/dosextens.i"
  96.     INCLUDE    "libraries/dos.i"
  97.     INCLUDE    "devices/serial.i"
  98.  
  99.     INCLUDE    "XREF:2.0.xref"
  100.     INCLUDE    "XREF:exec.xref"
  101.     INCLUDE    "XREF:dos.xref"
  102.  
  103.  
  104. CTRL_B:        EQU    2
  105. CTRL_F:        EQU    6
  106. BS:        EQU    8
  107. TAB:        EQU    9
  108. LF:        EQU    10
  109. CR:        EQU    13
  110. CTRL_N:        EQU    $E
  111. CTRL_O:        EQU    $F
  112. CTRL_P:        EQU    $10
  113. DEL:        EQU    127
  114. CSI:        EQU    $9B
  115. Cursor_Up:    EQU    'A'
  116. Cursor_Down:    EQU    'B'
  117. Cursor_Left:    EQU    'D'
  118. Cursor_Right:    EQU    'C'
  119.  
  120. MENU_KEY:    EQU    CTRL_P
  121. STATS_KEY:    EQU    CTRL_O
  122.  
  123. FALSE:        EQU    0
  124. TRUE:        EQU    1
  125.  
  126. BUFLEN:        EQU    1024
  127. ENTRYLENGTH:    EQU    20
  128.  
  129.         section    ST,CODE
  130.  
  131.         push    d2-d7/a2-a6
  132.         push    d0/a0
  133.  
  134.         openlib    Dos,NoDos        ;Keep at beginning
  135.  
  136. CLIStart:    lib    Dos,Output
  137.         move.l    d0,_stdout
  138.         lib    Dos,Input
  139.         move.l    d0,_stdin
  140.         move.l    d0,d1
  141.         lib    Dos,IsInteractive
  142.         tst.l    d0
  143.         beq    NotInteractive
  144.         pull    d0/a0
  145.  
  146.         lea.l    CLTemplate1,a0
  147.         move.l    a0,d1
  148.         lea.l    CLArray1,a0
  149.         move.l    a0,d2
  150.         clr.l    d3
  151.         lib    Dos,ReadArgs
  152.         move.l    d0,RDArgs1
  153.         beq    NoRDArgs
  154.  
  155.         move.l    CLArray1,a0
  156.         lea.l    FileNameBuf1,a1
  157.         tst.b    (a0)
  158.         beq    Parse2
  159. CLCopyLoop:    move.b    (a0)+,(a1)+
  160.         tst.b    -1(a1)
  161.         bne    CLCopyLoop
  162.  
  163. Parse2:        tst.l    OptPortName
  164.         beq    Parse3            ;No port specified
  165.  
  166.         lib    Exec,CreateMsgPort
  167.         move.l    d0,OptPort
  168.         beq    NoMsgPort
  169.  
  170. ;Add port to public lists
  171.  
  172.         move.l    OptPort,a1
  173.         move.l    OptPortName,a0
  174.         move.l    a0,LN_NAME(a1)
  175.         lib    Exec,AddPort
  176.  
  177. Parse3:
  178.  
  179. ;Create read reply port for serial.device (or modem0.device etc.)
  180.  
  181. MainStart:    openlib    Utility,NoUtility        ;Keep at beginning
  182.         lib    Exec,CreateMsgPort
  183.         move.l    d0,SRRPort
  184.         beq    NoMsgPort
  185.  
  186. ;Add port to public lists
  187.  
  188.         move.l    SRRPort,a1
  189.         lea.l    RPortText1,a0
  190.         move.l    a0,LN_NAME(a1)
  191.         lib    Exec,AddPort
  192.  
  193. ;Create read IOReq for serial.device (or for other device, but size is EXTSER)
  194.  
  195.         move.l    #IOEXTSER_SIZE,d0
  196.         move.l    SRRPort,a0
  197.         lib    Exec,CreateIORequest
  198.         move.l    d0,IORRequest
  199.         beq    NoIOReq
  200.  
  201. ;Create write reply port for serial.device (or modem0.device etc.)
  202.  
  203.         lib    Exec,CreateMsgPort
  204.         move.l    d0,SWRPort
  205.         beq    NoMsgPort
  206.  
  207. ;Add port to public lists
  208.  
  209.         move.l    SWRPort,a1
  210.         lea.l    WPortText1,a0
  211.         move.l    a0,LN_NAME(a1)
  212.         lib    Exec,AddPort
  213.  
  214. ;Create write IOReq for serial.device (or for other device, but size is EXTSER)
  215.  
  216.         move.l    #IOEXTSER_SIZE,d0
  217.         move.l    SWRPort,a0
  218.         lib    Exec,CreateIORequest
  219.         move.l    d0,IOWRequest
  220.         beq    NoIOReq
  221.  
  222.         bsr    LoadPrefsFile
  223.  
  224.         bsr    OpenSerial
  225.         bsr    SetSerParams
  226.  
  227. ;        tst.l    d0
  228. ;        bne    ShutDown
  229.  
  230.         lea.l    StartText1,a0
  231.         bsr    Printer
  232.  
  233. ;Change mode for CLI to RAW:
  234.  
  235.         move.l    _stdin,d1
  236.         move.l    #TRUE,d2
  237.         lib    Dos,SetMode
  238.  
  239. ;Flush extra text
  240.  
  241.         move.l    _stdin,d1
  242.         lib    Dos,Flush
  243.  
  244. Looper:        move.l    _stdin,d1
  245.         move.l    #5000,d2
  246.         lib    Dos,WaitForChar
  247.         tst.l    d0
  248.         beq    Looper1
  249.         move.l    _stdin,d1
  250.         lea.l    Buffer1,a0
  251.         move.l    a0,d2
  252.         move.l    #1,d3
  253.         lib    Dos,Read
  254.         cmp.b    #MENU_KEY,Buffer1
  255.         beq    Menu
  256.         move.b    CPAssign,d0
  257.         cmp.b    Buffer1,d0
  258.         beq    DoCTRL_P2
  259.         bsr    DoCLIInput
  260. Looper1:    move.l    #BUFLEN,d0
  261.         move.l    #1,d1
  262.         bsr    Read
  263.         tst.l    d0
  264.         beq    Looper
  265.  
  266.         lea.l    Buffer3,a0
  267.         clr.b    0(a0,d0.l)    ;null terminated, please!
  268.  
  269.         bsr    DoSerialInput
  270.  
  271.         move.l    _stdout,d1
  272.         lea.l    Buffer4,a1
  273.         bsr    GetLength
  274.         move.l    d0,d3
  275.         lea.l    Buffer4,a0
  276.         move.l    a0,d2
  277.         lib    Dos,Write
  278.  
  279.         bsr    DoCapture
  280.  
  281.         bra    Looper
  282.  
  283. Menu:        bsr    DoANSI
  284.         lea.l    MenuText1,a0
  285.         bsr    Printer
  286. Menu1:        move.l    _stdin,d1
  287.         lib    Dos,FGetC
  288.         cmp.l    #-1,d0
  289.         beq    ShutDown
  290.         cmp.l    #'a',d0
  291.         bcs    Menu2
  292.         cmp.l    #'z',d0
  293.         bhi    Menu2
  294.         sub.l    #32,d0
  295. Menu2:        cmp.l    #'P',d0
  296.         beq    Prefs
  297.         cmp.l    #'S',d0
  298.         beq    DoStats
  299.         cmp.l    #'C',d0
  300.         beq    ClearBoth
  301.         cmp.l    #'D',d0
  302.         beq    Dialer
  303.         cmp.l    #'B',d0
  304.         beq    DoBreak
  305.         cmp.l    #'O',d0
  306.         beq    DoCTRL_P
  307.         cmp.l    #'F',d0
  308.         beq    ResetFont
  309.         cmp.l    #'X',d0
  310.         beq    ClearScreen
  311.         cmp.l    #'R',d0
  312.         beq    DoReset
  313.         cmp.l    #'H',d0
  314.         beq    DoHangUp
  315.         cmp.l    #'L',d0
  316.         beq    DoOpenCapture
  317.         cmp.l    #'K',d0
  318.         beq    DoCloseCapture
  319.         cmp.l    #'+',d0
  320.         beq    DoUpLoad
  321.         cmp.l    #'-',d0
  322.         beq    DoDownLoad
  323.         cmp.l    #'M',d0
  324.         beq    DoExecute
  325.         cmp.l    #'?',d0
  326.         beq    DoInfo
  327.         cmp.l    #'Q',d0
  328.         beq    Quit
  329.         cmp.l    #'E',d0
  330.         beq    Exit1
  331.         bra    Menu1
  332. Exit1:        bclr.b    #0,ModifyMode            ;Clear modify bit
  333.         lea.l    ExitText1,a0
  334.         bsr    Printer
  335.         bra    Looper1
  336.  
  337. ResetFont:    lea.l    ResetFText1,a0
  338.         bsr    Printer
  339.         lea.l    PlainText1,a0
  340.         bsr    Printer
  341.         bra    Menu
  342.  
  343. ClearScreen:    lea.l    ClearSText1,a0
  344.         bsr    Printer
  345.         bra    Exit
  346.  
  347. DoANSI:        tst.b    UseANSI
  348.         beq    DoANSI_OUT
  349.         lea.l    ClearSText1,a0
  350.         bsr    Printer
  351. DoANSI_OUT:    rts
  352.  
  353. DoStats:    lea.l    StatsText2,a0
  354.         bsr    Printer
  355.         bsr    DoANSI
  356.         bsr    GiveStats
  357.         bsr    GetAnyKey
  358.         bra    Menu
  359.  
  360. ClearBoth:    lea.l    ClearText1,a0
  361.         bsr    Printer
  362.         clr.l    Received
  363.         clr.l    Sent
  364.         bra    Menu
  365.  
  366. DoBreak:    bsr    SendBREAK
  367.         lea.l    BreakText2,a0
  368.         bsr    Printer
  369.  
  370.         bra    Exit
  371.  
  372. DoCTRL_P:    move.b    #CTRL_P,Buffer1
  373.         bsr    Writer
  374.         lea.l    CTRL_PText1,a0
  375.         bsr    Printer
  376.         add.l    #1,Sent
  377.         bra    Exit
  378.  
  379. DoCTRL_P2:    move.b    #CTRL_P,Buffer1
  380.         bsr    Writer
  381.         add.l    #1,Sent
  382.         bra    Looper
  383.  
  384. DoReset:    lea.l    ResetText1,a0
  385.         bsr    Printer
  386.         lea.l    ResetText2,a1
  387.         bsr    GetLength
  388.         lea.l    ResetText2,a0
  389.         bsr    Writer2
  390.         bra    Exit
  391.  
  392. DoHangUp:    lea.l    HangUpText1,a0
  393.         bsr    Printer
  394.         move.l    #3*50,d1
  395.         lib    Dos,Delay
  396.         lea.l    HangUpText2,a1
  397.         bsr    GetLength
  398.         lea.l    HangUpText2,a0
  399.         bsr    Writer2
  400.         move.l    #2*55,d1
  401.         lib    Dos,Delay
  402.         lea.l    HangUpText3,a1
  403.         bsr    GetLength
  404.         lea.l    HangUpText3,a0
  405.         bsr    Writer2
  406.         bra    Exit
  407.  
  408. DoOpenCapture:    lea.l    OpenCaptureText1,a0
  409.         bsr    Printer
  410.  
  411.         tst.l    CaptureFile
  412.         bne    DoOpenCapture_ERR2
  413.  
  414.         lea.l    FileNameBuf2,a0
  415.         move.l    #128,d3
  416.         bsr    GetString
  417.  
  418.         tst.b    FileNameBuf2
  419.         beq    DoOpenCapture_OUT
  420.  
  421.         lea.l    FileNameBuf2,a0
  422.         move.l    a0,d1
  423.         move.l    #MODE_READWRITE,d2
  424.         lib    Dos,Open
  425.         move.l    d0,CaptureFile
  426.         beq    DoOpenCapture_ERR1
  427.  
  428. DoOpenCapture_OUT: bra    Menu
  429. DoOpenCapture_ERR1: lea.l    CaptureErrorText1,a0
  430.         bsr    Printer
  431.         bra    Menu
  432. DoOpenCapture_ERR2: lea.l    CaptureErrorText2,a0
  433.         bsr    Printer
  434.         bra    Menu
  435.  
  436. DoCloseCapture:    lea.l    CloseCaptureText1,a0
  437.         bsr    Printer
  438.  
  439.         move.l    CaptureFile,d1
  440.         beq    DoCloseCapture_OUT
  441.         lib    Dos,Close
  442.         clr.l    CaptureFile
  443. DoCloseCapture_OUT: bra    Menu
  444.  
  445. DoUpLoad:    lea.l    ULText2,a0
  446.         bsr    Printer
  447.         lea.l    ULProgram,a0
  448.         tst.b    (a0)
  449.         beq    DoUpLoad9
  450.  
  451.         lea.l    FileNameBuf2,a0
  452.         move.l    #128,d3
  453.         bsr    GetString
  454.  
  455.         bsr    MakeCmdString
  456.  
  457.         tst.b    ULDir
  458.         beq    DoUpLoad1
  459.         lea.l    ULDir,a0
  460.         move.l    a0,d1
  461.         move.l    #ACCESS_READ,d2
  462.         lib    Dos,Lock
  463.         move.l    d0,ULLock
  464.         bne    DoUpLoad2
  465.  
  466. DoUpLoad1:    lea.l    NoULDirText1,a0
  467.         bsr    Printer
  468.         bra    DoUpLoad5
  469.  
  470. DoUpLoad2:    move.l    ULLock,d1
  471.         lib    Dos,CurrentDir
  472.         move.l    d0,OldLock
  473.  
  474. DoUpLoad5:    lea.l    ULText3,a0
  475.         bsr    Printer
  476.  
  477.         lea.l    FileNameBuf3,a0
  478.         move.l    a0,d1
  479.         clr.l    d2
  480.         clr.l    d3
  481.         lib    Dos,Execute
  482.  
  483. ;change back to dir where we started from
  484.  
  485.         move.l    OldLock,d1
  486.         beq    DoUpLoad7
  487.         lib    Dos,CurrentDir
  488.         clr.l    OldLock
  489.  
  490. DoUpLoad7:    move.l    ULLock,d1
  491.         beq    DoUpLoad8
  492.         lib    Dos,UnLock
  493.         clr.l    ULLock
  494. DoUpLoad8:
  495.         bra    Exit
  496. DoUpLoad9:    lea.l    NoULDLProgText1,a0
  497.         bsr    Printer
  498.         bra    Exit
  499.  
  500. DoDownLoad:    lea.l    DLText2,a0
  501.         bsr    Printer
  502.         tst.b    DLProgram
  503.         beq    DoDownLoad9
  504.  
  505. ;change to the dl dir
  506.  
  507.         tst.b    DLDir
  508.         beq    DoDownLoad1
  509.         lea.l    DLDir,a0
  510.         move.l    a0,d1
  511.         move.l    #ACCESS_READ,d2
  512.         lib    Dos,Lock
  513.         move.l    d0,DLLock
  514.         bne    DoDownLoad2
  515.  
  516. DoDownLoad1:    lea.l    NoDLDirText1,a0
  517.         bsr    Printer
  518.         bra    DoDownLoad5
  519.  
  520. DoDownLoad2:    move.l    DLLock,d1
  521.         lib    Dos,CurrentDir
  522.         move.l    d0,OldLock
  523.  
  524. DoDownLoad5:    lea.l    DLProgram,a0
  525.         move.l    a0,d1
  526.         clr.l    d2
  527.         clr.l    d3
  528.         lib    Dos,Execute
  529.  
  530. ;change back to dir where we started from
  531.  
  532.         move.l    OldLock,d1
  533.         beq    DoDownLoad7
  534.         lib    Dos,CurrentDir
  535.         clr.l    OldLock
  536.  
  537. DoDownLoad7:    move.l    DLLock,d1
  538.         beq    DoDownLoad8
  539.         lib    Dos,UnLock
  540.         clr.l    DLLock
  541. DoDownLoad8:    bra    Exit
  542.  
  543. DoDownLoad9:    lea.l    NoULDLProgText1,a0
  544.         bsr    Printer
  545.         bra    Exit
  546.  
  547. DoExecute:    lea.l    ExecuteText1,a0
  548.         bsr    Printer
  549.  
  550.         lea.l    FileNameBuf2,a0
  551.         move.l    #128,d3
  552.         bsr    GetString
  553.  
  554.         lea.l    FileNameBuf2,a0
  555.         tst.b    (a0)
  556.         beq    DoExecute_OUT
  557.         move.l    a0,d1
  558.         clr.l    d2
  559.         clr.l    d3
  560.         lib    Dos,Execute
  561.  
  562.         bsr    GetAnyKey
  563.  
  564. DoExecute_OUT:    bra    Menu
  565.  
  566. DoInfo:        lea.l    InfoText1,a0
  567.         bsr    Printer
  568.         bsr    DoANSI
  569.         lea.l    AuthorText1,a0
  570.         bsr    Printer
  571.         bsr    GetAnyKey
  572.         bra    Menu
  573.  
  574. Quit:        lea.l    QuitText1,a0
  575.         bsr    Printer
  576.         lea.l    CRLFText1,a0
  577.         bsr    Printer
  578.         bsr    GiveStats
  579.         bra    ShutDown
  580.  
  581. Exit:        bsr    DoANSI
  582.         lea.l    TerminalText1,a0
  583.         bsr    Printer
  584.         bra    Looper1
  585.  
  586. ;If you add another was to get out of the dialer, please remember to clear
  587. ;the ModifyMode (just in case), so the user can't accidentally erase an
  588. ;entry!
  589.  
  590. Dialer:        lea.l    DialerText1,a0
  591.         bsr    Printer
  592. Dialer0.1:    bsr    DoANSI
  593.         lea.l    DialerText2,a0
  594.         bsr    Printer
  595. Dialer0.2:    bsr    PrintEntries
  596. Dialer0.3:    bsr    PrintSelect
  597. Dialer0.4:    lea.l    DialerText3,a0
  598.         bsr    Printer
  599. Dialer1:    move.l    _stdin,d1
  600.         lib    Dos,FGetC
  601.         cmp.l    #-1,d0
  602.         beq    Menu
  603.         cmp.l    #'a',d0
  604.         bcs    Dialer2
  605.         cmp.l    #'z',d0
  606.         bhi    Dialer
  607.         sub.l    #32,d0
  608. Dialer2:    cmp.l    #'0',d0
  609.         beq    DoEntry0
  610.         cmp.l    #'1',d0
  611.         beq    DoEntry1
  612.         cmp.l    #'2',d0
  613.         beq    DoEntry2
  614.         cmp.l    #'3',d0
  615.         beq    DoEntry3
  616.         cmp.l    #'4',d0
  617.         beq    DoEntry4
  618.         cmp.l    #'5',d0
  619.         beq    DoEntry5
  620.         cmp.l    #'6',d0
  621.         beq    DoEntry6
  622.         cmp.l    #'7',d0
  623.         beq    DoEntry7
  624.         cmp.l    #'8',d0
  625.         beq    DoEntry8
  626.         cmp.l    #'9',d0
  627.         beq    DoEntry9
  628.         cmp.l    #'D',d0
  629.         beq    DialList
  630.         cmp.l    #'E',d0
  631.         beq    Exit1
  632.         cmp.l    #'M',d0
  633.         beq    MainMenu
  634.         cmp.l    #'-',d0
  635.         beq    MainMenu
  636.         cmp.l    #'S',d0
  637.         beq    SingleDial
  638.         cmp.l    #'R',d0
  639.         beq    Relist
  640.         cmp.l    #'C',d0
  641.         beq    ClearList
  642.         cmp.l    #'A',d0
  643.         beq    SelectAll
  644.         cmp.l    #'I',d0
  645.         beq    SetModifyMode
  646.         cmp.l    #'P',d0
  647.         beq    EditPrefix
  648.         cmp.l    #'H',d0
  649.         beq    DialerHelp
  650.         cmp.l    #'?',d0
  651.         beq    DialerHelp
  652.         bra    Dialer1
  653.  
  654. SetModifyMode:    bchg.b    #0,ModifyMode
  655.         beq    SetModifyMode1
  656.         lea.l    ModifyText2,a0
  657.         bsr    Printer
  658.         bra    Dialer0.4
  659. SetModifyMode1:    lea.l    ModifyText1,a0
  660.         bsr    Printer
  661.         bra    Dialer0.4
  662.  
  663. DialerHelp:    lea.l    HelpText1,a0
  664.         bsr    Printer
  665.         bsr    DoANSI
  666.         bra    Dialer0.4
  667.  
  668. ClearList:    lea.l    ClearText2,a0
  669.         bsr    Printer
  670.         bsr    DoANSI
  671.         clr.l    EntrySelected1
  672.         clr.l    EntrySelected5
  673.         clr.w    EntrySelected9
  674.         bra    DoEntry_OUT1
  675.  
  676. SelectAll:    lea.l    AllText1,a0
  677.         bsr    Printer
  678.         bsr    DoANSI
  679.         move.l    #$01010101,EntrySelected1
  680.         move.l    #$01010101,EntrySelected5
  681.         move.w    #$0101,EntrySelected9
  682.         bra    DoEntry_OUT1
  683.  
  684. DoEntry1:    lea.l    Entry1,a0
  685.         tst.w    ModifyMode
  686.         bne    EditEntry
  687.         bchg.b    #0,EntrySelected1
  688.         bra    DoEntry_OUT
  689. DoEntry2:    lea.l    Entry2,a0
  690.         tst.w    ModifyMode
  691.         bne    EditEntry
  692.         bchg.b    #0,EntrySelected2
  693.         bra    DoEntry_OUT
  694. DoEntry3:    lea.l    Entry3,a0
  695.         tst.w    ModifyMode
  696.         bne    EditEntry
  697.         bchg.b    #0,EntrySelected3
  698.         bra    DoEntry_OUT
  699. DoEntry4:    lea.l    Entry4,a0
  700.         tst.w    ModifyMode
  701.         bne    EditEntry
  702.         bchg.b    #0,EntrySelected4
  703.         bra    DoEntry_OUT
  704. DoEntry5:    lea.l    Entry5,a0
  705.         tst.w    ModifyMode
  706.         bne    EditEntry
  707.         bchg.b    #0,EntrySelected5
  708.         bra    DoEntry_OUT
  709. DoEntry6:    lea.l    Entry6,a0
  710.         tst.w    ModifyMode
  711.         bne    EditEntry
  712.         bchg.b    #0,EntrySelected6
  713.         bra    DoEntry_OUT
  714. DoEntry7:    lea.l    Entry7,a0
  715.         tst.w    ModifyMode
  716.         bne    EditEntry
  717.         bchg.b    #0,EntrySelected7
  718.         bra    DoEntry_OUT
  719. DoEntry8:    lea.l    Entry8,a0
  720.         tst.w    ModifyMode
  721.         bne    EditEntry
  722.         bchg.b    #0,EntrySelected8
  723.         bra    DoEntry_OUT
  724. DoEntry9:    lea.l    Entry9,a0
  725.         tst.w    ModifyMode
  726.         bne    EditEntry
  727.         bchg.b    #0,EntrySelected9
  728.         bra    DoEntry_OUT
  729. DoEntry0:    lea.l    Entry10,a0
  730.         tst.w    ModifyMode
  731.         bne    EditEntry
  732.         bchg.b    #0,EntrySelected0
  733. DoEntry_OUT:    lea.l    EntryTextXIV,a0
  734.         bsr    Printer
  735.         bsr    DoANSI
  736. DoEntry_OUT1:    bsr    PrintSelect
  737.         lea.l    SelectionText1,a0
  738.         bsr    Printer
  739.         bra    Dialer1
  740.  
  741. EditEntry:    push    a0
  742.         lea.l    EditEntryText1,a0
  743.         bsr    Printer
  744.         lea.l    EditEntryText2,a0
  745.         bsr    Printer
  746.         pull    a0
  747.         move.l    #ENTRYLENGTH,d3
  748.         bsr    GetString
  749.         bsr    PrintEntries
  750.         bra    DoEntry_OUT1
  751.  
  752. EditPrefix:    lea.l    EditEntryText3,a0
  753.         bsr    Printer
  754.         lea.l    EditEntryText4,a0
  755.         bsr    Printer
  756.         lea.l    DialPrefix,a0
  757.         move.l    #16,d3
  758.         bsr    GetString
  759.         bra    Dialer0.1
  760.  
  761. MainMenu:    bclr.b    #0,ModifyMode            ;Clear modify bit
  762.         lea.l    MainMenuText1,a0
  763.         bsr    Printer
  764.         bra    Menu
  765.  
  766. DialList:    lea.l    DialText1,a0
  767.         bsr    Printer
  768.         bsr    DoANSI
  769.         lea.l    DialText2,a0
  770.         bsr    Printer
  771.  
  772. DialList1:    lea.l    EntrySelected1,a2
  773.         tst.b    (a2)
  774.         beq    DialList2
  775.         lea.l    Entry1,a0
  776.         tst.b    (a0)
  777.         beq    DialList1.1
  778.         bsr    DialEntry
  779.         tst.l    d0        ;connect
  780.         bne    DialList1.01
  781. DialLCONNECT:    clr.b    (a2)
  782.         beq    Exit
  783. DialList1.01:    cmp.l    #2,d0        ;cancel
  784.         beq    Dialer0.1
  785.         cmp.l    #3,d0        ;remove
  786.         bne    DialList2
  787. DialList1.1:    clr.b    (a2)
  788. DialList2:    lea.l    EntrySelected2,a2
  789.         tst.b    (a2)
  790.         beq    DialList3
  791.         lea.l    Entry2,a0
  792.         tst.b    (a0)
  793.         beq    DialList2.1
  794.         bsr    DialEntry
  795.         tst.l    d0
  796.         beq    DialLCONNECT    ;Connect
  797.         cmp.l    #2,d0        ;cancel
  798.         beq    Dialer0.1
  799.         cmp.l    #3,d0        ;remove
  800.         bne    DialList3
  801. DialList2.1:    clr.b    (a2)
  802. DialList3:    lea.l    EntrySelected3,a2
  803.         tst.b    (a2)
  804.         beq    DialList4
  805.         lea.l    Entry3,a0
  806.         tst.b    (a0)
  807.         beq    DialList3.1
  808.         bsr    DialEntry
  809.         tst.l    d0
  810.         beq    DialLCONNECT    ;Connect
  811.         cmp.l    #2,d0        ;cancel
  812.         beq    Dialer0.1
  813.         cmp.l    #3,d0        ;remove
  814.         bne    DialList4
  815. DialList3.1:    clr.b    (a2)
  816. DialList4:    lea.l    EntrySelected4,a2
  817.         tst.b    (a2)
  818.         beq    DialList5
  819.         lea.l    Entry4,a0
  820.         tst.b    (a0)
  821.         beq    DialList4.1
  822.         bsr    DialEntry
  823.         tst.l    d0
  824.         beq    DialLCONNECT    ;Connect
  825.         cmp.l    #2,d0        ;cancel
  826.         beq    Dialer0.1
  827.         cmp.l    #3,d0        ;remove
  828.         bne    DialList5
  829. DialList4.1:    clr.b    (a2)
  830. DialList5:    lea.l    EntrySelected5,a2
  831.         tst.b    (a2)
  832.         beq    DialList6
  833.         lea.l    Entry5,a0
  834.         tst.b    (a0)
  835.         beq    DialList5.1
  836.         bsr    DialEntry
  837.         tst.l    d0
  838.         beq    DialLCONNECT    ;Connect
  839.         cmp.l    #2,d0        ;cancel
  840.         beq    Dialer0.1
  841.         cmp.l    #3,d0        ;remove
  842.         bne    DialList6
  843. DialList5.1:    clr.b    (a2)
  844. DialList6:    lea.l    EntrySelected6,a2
  845.         tst.b    (a2)
  846.         beq    DialList7
  847.         lea.l    Entry6,a0
  848.         tst.b    (a0)
  849.         beq    DialList6.1
  850.         bsr    DialEntry
  851.         tst.l    d0
  852.         beq    DialLCONNECT    ;Connect
  853.         cmp.l    #2,d0        ;cancel
  854.         beq    Dialer0.1
  855.         cmp.l    #3,d0        ;remove
  856.         bne    DialList7
  857. DialList6.1:    clr.b    (a2)
  858. DialList7:    lea.l    EntrySelected7,a2
  859.         tst.b    (a2)
  860.         beq    DialList8
  861.         lea.l    Entry7,a0
  862.         tst.b    (a0)
  863.         beq    DialList7.1
  864.         bsr    DialEntry
  865.         tst.l    d0
  866.         beq    DialLCONNECT    ;Connect
  867.         cmp.l    #2,d0        ;cancel
  868.         beq    Dialer0.1
  869.         cmp.l    #3,d0        ;remove
  870.         bne    DialList8
  871. DialList7.1:    clr.b    (a2)
  872. DialList8:    lea.l    EntrySelected8,a2
  873.         tst.b    (a2)
  874.         beq    DialList9
  875.         lea.l    Entry8,a0
  876.         tst.b    (a0)
  877.         beq    DialList8.1
  878.         bsr    DialEntry
  879.         tst.l    d0
  880.         beq    DialLCONNECT    ;Connect
  881.         cmp.l    #2,d0        ;cancel
  882.         beq    Dialer0.1
  883.         cmp.l    #3,d0        ;remove
  884.         bne    DialList9
  885. DialList8.1:    clr.b    (a2)
  886. DialList9:    lea.l    EntrySelected9,a2
  887.         tst.b    (a2)
  888.         beq    DialList10
  889.         lea.l    Entry9,a0
  890.         tst.b    (a0)
  891.         beq    DialList9.1
  892.         bsr    DialEntry
  893.         tst.l    d0
  894.         beq    DialLCONNECT    ;Connect
  895.         cmp.l    #2,d0        ;cancel
  896.         beq    Dialer0.1
  897.         cmp.l    #3,d0        ;remove
  898.         bne    DialList10
  899. DialList9.1:    clr.b    (a2)
  900. DialList10:    lea.l    EntrySelected0,a2
  901.         tst.b    (a2)
  902.         beq    DialList11
  903.         lea.l    Entry10,a0
  904.         tst.b    (a0)
  905.         beq    DialList10.1
  906.         bsr    DialEntry
  907.         tst.l    d0
  908.         beq    DialLCONNECT    ;Connect
  909.         cmp.l    #2,d0        ;cancel
  910.         beq    Dialer0.1
  911.         cmp.l    #3,d0        ;remove
  912.         bne    DialList11
  913. DialList10.1:    clr.b    (a2)
  914. DialList11:    tst.l    EntrySelected1
  915.         bne    DialList1
  916.         tst.l    EntrySelected5
  917.         bne    DialList1
  918.         tst.w    EntrySelected9
  919.         bne    DialList1
  920.         lea.l    EmptyText1,a0
  921.         bsr    Printer
  922.         bra    Dialer0.1
  923.  
  924. Relist:        lea.l    RelistText1,a0
  925.         bsr    Printer
  926.         bsr    DoANSI
  927.         bra    Dialer0.2
  928.  
  929. SingleDial:    lea.l    SingleText1,a0
  930.         bsr    Printer
  931.  
  932.         bsr    DoANSI
  933.  
  934.         lea.l    SingleText2,a0
  935.         bsr    Printer
  936.  
  937.         lea.l    DialBuffer1,a0
  938.         move.l    #ENTRYLENGTH,d3
  939.         bsr    GetString
  940.         tst.l    d0
  941.         bne    Dialer0.1
  942.  
  943.         lea.l    DialBuffer1,a1
  944.         bsr    GetLength
  945.         tst.l    d0
  946.         beq    Dialer0.1
  947.  
  948.         lea.l    DialText2,a0
  949.         bsr    Printer
  950.  
  951. SingleDial1:    lea.l    DialBuffer1,a0
  952.         bsr    DialEntry
  953.         tst.l    d0
  954.         beq    Exit
  955.         cmp.l    #1,d0
  956.         beq    SingleDial1
  957.         cmp.l    #2,d0
  958.         beq    Dialer0.1
  959.         cmp.l    #3,d0
  960.         beq    Dialer0.1
  961.         bra    Dialer0.1
  962.  
  963. Prefs:        lea.l    PrefsText1,a0
  964.         bsr    Printer
  965. Prefs1:        bsr    DoANSI
  966.         lea.l    PrefsText2,a0
  967.         bsr    Printer
  968. Prefs2:        move.l    _stdin,d1
  969.         lib    Dos,FGetC
  970.         cmp.l    #-1,d0
  971.         beq    Menu
  972.         cmp.l    #'a',d0
  973.         bcs    Prefs3
  974.         cmp.l    #'z',d0
  975.         bhi    Prefs3
  976.         sub.l    #32,d0
  977. Prefs3:        cmp.l    #'S',d0
  978.         beq    SetSpeed
  979.         cmp.l    #'T',d0
  980.         beq    Terminal
  981.         cmp.l    #'R',d0
  982.         beq    ClearSettings
  983.         cmp.l    #'L',d0
  984.         beq    DoLoad
  985.         cmp.l    #'W',d0
  986.         beq    DoSave
  987.         cmp.l    #'N',d0
  988.         beq    NameFile
  989.         cmp.l    #'E',d0
  990.         beq    Exit1
  991.         cmp.l    #'V',d0
  992.         beq    DoView
  993.         cmp.l    #'U',d0
  994.         beq    SetULDir
  995.         cmp.l    #'D',d0
  996.         beq    SetDLDir
  997.         cmp.l    #'+',d0
  998.         beq    SetULProg
  999.         cmp.l    #'-',d0
  1000.         beq    SetDLProg
  1001.         cmp.l    #'A',d0
  1002.         beq    AssignCTRL_P
  1003.         cmp.l    #'M',d0
  1004.         beq    MainMenu
  1005.         bra    Prefs2
  1006.  
  1007. SetULDir:    lea.l    ULText5,a0
  1008.         bsr    Printer
  1009.         lea.l    ULDir,a0
  1010.         move.l    #128,d3
  1011.         bsr    GetString
  1012.         bra    Prefs1
  1013.  
  1014. SetDLDir:    lea.l    DLText5,a0
  1015.         bsr    Printer
  1016.         lea.l    DLDir,a0
  1017.         move.l    #128,d3
  1018.         bsr    GetString
  1019.         bra    Prefs1
  1020.  
  1021. SetULProg:    lea.l    ULText1,a0
  1022.         bsr    Printer
  1023.         lea.l    ULProgram,a0
  1024.         move.l    #128,d3
  1025.         bsr    GetString
  1026.         bra    Prefs1
  1027.  
  1028. SetDLProg:    lea.l    DLText1,a0
  1029.         bsr    Printer
  1030.         lea.l    DLProgram,a0
  1031.         move.l    #128,d3
  1032.         bsr    GetString
  1033.         bra    Prefs1
  1034.  
  1035. AssignCTRL_P:    lea.l    AssignText1,a0
  1036.         bsr    Printer
  1037.  
  1038.         move.l    _stdin,d1
  1039.         lib    Dos,Flush
  1040.  
  1041.         lea.l    AssignText2,a0
  1042.         bsr    Printer
  1043.  
  1044.         move.l    _stdin,d1
  1045.         lib    Dos,FGetC
  1046.         cmp.l    #-1,d0
  1047.         beq    Prefs1
  1048.         move.b    d0,CPAssign
  1049.  
  1050.         lea.l    CRLFText1,a0
  1051.         bsr    Printer
  1052.         bra    Prefs1
  1053.  
  1054. NameFile:    lea.l    EnterNText1,a0
  1055.         bsr    Printer
  1056.  
  1057.         lea.l    EnterNText2,a0
  1058.         bsr    Printer
  1059.  
  1060.         lea.l    FileNameBuf1,a0
  1061.         move.l    #128,d3
  1062.         bsr    GetString
  1063.         tst.l    d0
  1064.         bne    Prefs1
  1065.  
  1066.         bra    Prefs1
  1067.  
  1068. DoLoad:        lea.l    LoadText1,a0
  1069.         bsr    Printer
  1070.         bsr    LoadPrefsFile
  1071.         bsr    CloseSerial
  1072.         bsr    OpenSerial
  1073.         bsr    SetSerParams
  1074.         bra    Prefs1
  1075. DoSave:        lea.l    SaveText1,a0
  1076.         bsr    Printer
  1077.         bsr    SavePrefsFile
  1078.         bra    Prefs1
  1079.  
  1080. DoView:        lea.l    ViewText1,a0
  1081.         bsr    Printer
  1082.         bsr    DoANSI
  1083.         bsr    GiveSettings
  1084.         bsr    GetAnyKey
  1085.         bra    Prefs1
  1086.  
  1087. ClearSettings:    lea.l    ClearText3,a0
  1088.         bsr    Printer
  1089.         move.l    #9600,Speed
  1090.         move.b    #8,DataBits
  1091.         move.b    #1,StopBits
  1092.         clr.l    CRTranslate    ;All translating (long)
  1093.         clr.l    SwapBSDEL    ;SwapBSDEL+UseANSI+CPAssign+CursorRemap
  1094.         bsr    SetSerParams
  1095.         tst.l    d0
  1096.         beq    Prefs1
  1097.         lea.l    SerSetText1,a0
  1098.         bsr    Printer
  1099.         bra    Prefs1
  1100.  
  1101. Terminal:    lea.l    STerminalText1,a0
  1102.         bsr    Printer
  1103. Terminal1:    bsr    DoANSI
  1104.         lea.l    STerminalText2,a0
  1105.         bsr    Printer
  1106. Terminal2:    move.l    _stdin,d1
  1107.         lib    Dos,FGetC
  1108.         cmp.l    #-1,d0
  1109.         beq    Prefs1
  1110.         cmp.l    #'a',d0
  1111.         bcs    Terminal3
  1112.         cmp.l    #'z',d0
  1113.         bhi    Terminal3
  1114.         sub.l    #32,d0
  1115. Terminal3:    cmp.l    #'L',d0
  1116.         beq    SetLocalEcho
  1117.         cmp.l    #'S',d0
  1118.         beq    SetSwapBSDEL
  1119.         cmp.l    #'1',d0
  1120.         beq    SetCRTrans
  1121.         cmp.l    #'2',d0
  1122.         beq    SetLFTrans
  1123.         cmp.l    #'3',d0
  1124.         beq    SetCRTransIn
  1125.         cmp.l    #'4',d0
  1126.         beq    SetLFTransIn
  1127.         cmp.l    #'A',d0
  1128.         beq    SetANSIMode
  1129.         cmp.l    #'C',d0
  1130.         beq    SetCRemapMode
  1131.         cmp.l    #'E',d0
  1132.         beq    Exit1
  1133.         cmp.l    #'M',d0
  1134.         beq    MainMenu
  1135.         cmp.l    #'-',d0
  1136.         beq    Prefs
  1137.         bra    Terminal2
  1138.  
  1139. SetCRemapMode:    bchg.b    #0,CursorRemap
  1140.         beq    SetCRemapMode1
  1141.         lea.l    CRemapText2,a0
  1142.         bsr    Printer
  1143.         bra    Terminal1
  1144. SetCRemapMode1:    lea.l    CRemapText1,a0
  1145.         bsr    Printer
  1146.         bra    Terminal1
  1147.  
  1148. SetANSIMode:    bchg.b    #0,UseANSI
  1149.         beq    SetANSIMode1
  1150.         lea.l    ANSIText2,a0
  1151.         bsr    Printer
  1152.         bra    Terminal1
  1153. SetANSIMode1:    lea.l    ANSIText1,a0
  1154.         bsr    Printer
  1155.         bra    Terminal1
  1156.  
  1157. SetSwapBSDEL:    bchg.b    #0,SwapBSDEL
  1158.         beq    SetSwapBSDEL1
  1159.         lea.l    SwapText2,a0
  1160.         bsr    Printer
  1161.         bra    Terminal1
  1162. SetSwapBSDEL1:    lea.l    SwapText1,a0
  1163.         bsr    Printer
  1164.         bra    Terminal1
  1165.  
  1166. SetCRTrans:    lea.l    CRTransText1,a0
  1167.         bsr    Printer
  1168.         lea.l    CRTransText2,a0
  1169.         bsr    Printer
  1170.         bsr    GetNSA
  1171.         cmp.l    #-1,d0
  1172.         beq    Terminal1
  1173.         move.b    d0,CRTranslate
  1174.         bra    Terminal1
  1175.  
  1176. SetLFTrans:    lea.l    LFTransText1,a0
  1177.         bsr    Printer
  1178.         lea.l    LFTransText2,a0
  1179.         bsr    Printer
  1180.         bsr    GetNSA
  1181.         cmp.l    #-1,d0
  1182.         beq    Terminal1
  1183.         move.b    d0,LFTranslate
  1184.         bra    Terminal1
  1185.  
  1186. SetCRTransIn:    lea.l    CRTransText3,a0
  1187.         bsr    Printer
  1188.         lea.l    CRTransText2,a0
  1189.         bsr    Printer
  1190.         bsr    GetNSA
  1191.         cmp.l    #-1,d0
  1192.         beq    Terminal1
  1193.         move.b    d0,CRTranslateIn
  1194.         bra    Terminal1
  1195.  
  1196. SetLFTransIn:    lea.l    LFTransText3,a0
  1197.         bsr    Printer
  1198.         lea.l    LFTransText2,a0
  1199.         bsr    Printer
  1200.         bsr    GetNSA
  1201.         cmp.l    #-1,d0
  1202.         beq    Terminal1
  1203.         move.b    d0,LFTranslateIn
  1204.         bra    Terminal1
  1205.  
  1206. SetLocalEcho:    bchg.b    #0,LocalEcho
  1207.         beq    SetLocalEcho1
  1208.         lea.l    EchoText2,a0
  1209.         bsr    Printer
  1210.         bra    Terminal1
  1211. SetLocalEcho1:    lea.l    EchoText1,a0
  1212.         bsr    Printer
  1213.         bra    Terminal1
  1214.  
  1215. SetSpeed:    lea.l    SpeedText11,a0
  1216.         bsr    Printer
  1217. SetSpeed1:    bsr    DoANSI
  1218.         lea.l    SpeedText1,a0
  1219.         bsr    Printer
  1220. SetSpeed2:    move.l    _stdin,d1
  1221.         lib    Dos,FGetC
  1222.         cmp.l    #-1,d0
  1223.         beq    Prefs1
  1224.         cmp.l    #'a',d0
  1225.         bcs    SetSpeed3
  1226.         cmp.l    #'z',d0
  1227.         bhi    SetSpeed3
  1228.         sub.l    #32,d0
  1229. SetSpeed3:    move.l    Speed,d7    ;get real speed if fail later
  1230.         cmp.l    #'0',d0
  1231.         beq    DoSpeed0
  1232.         cmp.l    #'1',d0
  1233.         beq    DoSpeed1
  1234.         cmp.l    #'2',d0
  1235.         beq    DoSpeed2
  1236.         cmp.l    #'3',d0
  1237.         beq    DoSpeed3
  1238.         cmp.l    #'4',d0
  1239.         beq    DoSpeed4
  1240.         cmp.l    #'5',d0
  1241.         beq    DoSpeed5
  1242.         cmp.l    #'6',d0
  1243.         beq    DoSpeed6
  1244.         cmp.l    #'7',d0
  1245.         beq    DoSpeed7
  1246.         cmp.l    #'8',d0
  1247.         beq    DoSpeed8
  1248.         cmp.l    #'9',d0
  1249.         beq    DoSpeed9
  1250.         cmp.l    #'D',d0
  1251.         beq    SetDataBits
  1252.         cmp.l    #'S',d0
  1253.         beq    SetStopBits
  1254.         cmp.l    #'N',d0
  1255.         beq    SetDevice
  1256.         cmp.l    #'R',d0
  1257.         beq    ReOpenDevice
  1258.         cmp.l    #'E',d0
  1259.         beq    Exit1
  1260.         cmp.l    #'M',d0
  1261.         beq    MainMenu
  1262.         cmp.l    #'-',d0
  1263.         beq    Prefs
  1264.         bra    SetSpeed2
  1265.  
  1266. DoSpeed1:    move.l    #110,Speed
  1267.         bra    DoSpeed_OUT
  1268. DoSpeed2:    move.l    #300,Speed
  1269.         bra    DoSpeed_OUT
  1270. DoSpeed3:    move.l    #1200,Speed
  1271.         bra    DoSpeed_OUT
  1272. DoSpeed4:    move.l    #2400,Speed
  1273.         bra    DoSpeed_OUT
  1274. DoSpeed5:    move.l    #4800,Speed
  1275.         bra    DoSpeed_OUT
  1276. DoSpeed6:    move.l    #9600,Speed
  1277.         bra    DoSpeed_OUT
  1278. DoSpeed7:    move.l    #19200,Speed
  1279.         bra    DoSpeed_OUT
  1280. DoSpeed8:    move.l    #38400,Speed
  1281.         bra    DoSpeed_OUT
  1282. DoSpeed9:    move.l    #57600,Speed
  1283.         bra    DoSpeed_OUT
  1284. DoSpeed0:    move.l    #115200,Speed
  1285. DoSpeed_OUT:    lea.l    SpeedText13,a0
  1286.         bsr    Printer
  1287.  
  1288.         bsr    SetSerParams
  1289.         tst.l    d0
  1290.         beq    DoSpeed_OUT1
  1291.  
  1292.         lea.l    SpeedText12,a0
  1293.         bsr    Printer
  1294.         move.l    d7,Speed
  1295. DoSpeed_OUT1:    bra    SetSpeed1        ;OPTI
  1296.  
  1297. SetDevice:    lea.l    NameText1,a0
  1298.         bsr    Printer
  1299.  
  1300.         lea.l    NameText2,a0
  1301.         bsr    Printer
  1302.  
  1303.         lea.l    SerDevNBuffer1,a0
  1304.         move.l    #32,d3
  1305.         bsr    GetString
  1306.         tst.l    d0
  1307.         bne    SetSpeed1
  1308.  
  1309.         lea.l    NameText3,a0
  1310.         bsr    Printer
  1311.  
  1312.         lea.l    DialBuffer1,a0
  1313.         move.l    #12,d3
  1314.         bsr    GetString
  1315.         tst.l    d0
  1316.         bne    SetSpeed1
  1317.  
  1318.         lea.l    DialBuffer1,a0
  1319.         bsr    ConvASCII
  1320.         move.l    d0,SerUnit
  1321.  
  1322.         lea.l    CRLFText1,a0
  1323.         bsr    Printer
  1324.  
  1325.         bsr    CloseSerial
  1326.         bsr    OpenSerial
  1327.         bsr    SetSerParams
  1328.         bra    SetSpeed1
  1329.  
  1330. ReOpenDevice:    lea.l    ReOpenText1,a0
  1331.         bsr    Printer
  1332.         bsr    CloseSerial
  1333.         bsr    OpenSerial
  1334.         bsr    SetSerParams
  1335.         bra    SetSpeed1
  1336.  
  1337. SetDataBits:    move.b    DataBits,d7
  1338. SetDataBits0.1:    cmp.b    #7,DataBits
  1339.         beq    SetDataBits1
  1340.         move.b    #7,DataBits
  1341.         lea.l    DBitsText1,a0
  1342.         bsr    Printer
  1343.         bra    SetDataBits2
  1344. SetDataBits1:    move.b    #8,DataBits
  1345.         lea.l    DBitsText2,a0
  1346.         bsr    Printer
  1347.         bra    SetSpeed1
  1348. SetDataBits2:    bsr    SetSerParams
  1349.         tst.l    d0
  1350.         beq    SetSpeed1
  1351.         move.b    d7,DataBits
  1352.         lea.l    DBitsText3,a0
  1353.         bsr    Printer
  1354.         bra    SetSpeed1
  1355.  
  1356. SetStopBits:    move.b    StopBits,d7
  1357. SetStopBits0.1:    cmp.b    #1,StopBits
  1358.         beq    SetStopBits1
  1359.         move.b    #1,StopBits
  1360.         lea.l    SBitsText1,a0
  1361.         bsr    Printer
  1362.         bra    SetStopBits2
  1363. SetStopBits1:    move.b    #2,StopBits
  1364.         lea.l    SBitsText2,a0
  1365.         bsr    Printer
  1366.         bra    SetSpeed1
  1367. SetStopBits2:    bsr    SetSerParams
  1368.         tst.l    d0
  1369.         beq    SetSpeed1
  1370.         move.b    d7,StopBits
  1371.         lea.l    SBitsText3,a0
  1372.         bsr    Printer
  1373.         bra    SetSpeed1
  1374.  
  1375. ;Dials one number. Fails for three reasons, because the user decided
  1376. ;to skip this entry, to cancel dialing or to remove this entry.
  1377. ;If a busy is found, a value of 1 will be returned.
  1378. ;
  1379. ;Inputs a0 = pointer to phonenumber (ASCII text)
  1380. ;
  1381. ;Result d0 = Success (0=Connect, 1=Skipped, 2=Cancelled, 3=Remove this entry)
  1382. ;
  1383.  
  1384. DialEntry:    push    d2-d7/a2-a6
  1385.         move.l    a0,a4
  1386.  
  1387. DialEntry1:    lea.l    DialPrefix,a1
  1388.         bsr    GetLength
  1389.         lea.l    DialPrefix,a0
  1390.         bsr    Writer2
  1391.         move.l    a4,a1
  1392.         bsr    GetLength
  1393.         move.l    a4,a0
  1394.         bsr    Writer2
  1395.         lea.l    CRLFText1,a1
  1396.         bsr    GetLength
  1397.         lea.l    CRLFText1,a0
  1398.         bsr    Writer2
  1399.         lea.l    DialingText1,a0
  1400.         bsr    Printer
  1401.         move.l    a4,a0
  1402.         bsr    Printer
  1403.         lea.l    CRLFText1,a0
  1404.         bsr    Printer
  1405.         move.l    #BUFLEN,d0        ;try to read ATDT etc.
  1406.         move.l    #1,d1
  1407.         bsr    Read
  1408.  
  1409. DialEntry2:    move.l    #10,d1
  1410.         lib    Dos,Delay
  1411.         move.l    #BUFLEN,d0
  1412.         move.l    #4,d1
  1413.         bsr    Read
  1414.         tst.l    d0
  1415.         beq    DialEntry3
  1416.         lea.l    Buffer3,a0
  1417.         clr.b    0(a0,d0.l)    ;null terminated, please!
  1418.         move.b    #'C',d0
  1419.         move.b    #'O',d1
  1420.         lea.l    Buffer3,a0
  1421.         bsr    FindWord
  1422.         bne    DialEntry_OUT1
  1423.         move.b    #'B',d0
  1424.         move.b    #'U',d1
  1425.         lea.l    Buffer3,a0
  1426.         bsr    FindWord
  1427.         bne    DialEntry4
  1428.         move.b    #'N',d1
  1429.         move.b    #'O',d1
  1430.         lea.l    Buffer3,a0
  1431.         bsr    FindWord
  1432.         bne    DialEntry_OUT2
  1433. DialEntry3:    move.l    _stdin,d1
  1434.         move.l    #10000,d2
  1435.         lib    Dos,WaitForChar
  1436.         tst.l    d0
  1437.         beq    DialEntry2
  1438.         move.l    _stdin,d1
  1439.         lea.l    Buffer2,a0
  1440.         move.l    a0,d2
  1441.         move.l    #1,d3
  1442.         lib    Dos,Read
  1443.         cmp.l    #1,d0
  1444.         bne    DialEntry2
  1445.         cmp.b    #' ',Buffer2    ;Space
  1446.         beq    DialEntry_OUT2
  1447.         cmp.b    #27,Buffer2    ;ESC
  1448.         beq    DialEntry_OUT3
  1449.         cmp.b    #8,Buffer2    ;BS
  1450.         beq    DialEntry_OUT4
  1451.         bra    DialEntry2
  1452. DialEntry4:    lea.l    BusyText1,a0
  1453.         bsr    Printer
  1454.         move.l    #50+25,d1
  1455.         lib    Dos,Delay
  1456.         pull    d2-d7/a2-a6
  1457.         move.l    #1,d0
  1458.         rts
  1459. DialEntry_OUT1:    move.l    #BUFLEN,d0        ;try to read extra stuff
  1460.         move.l    #1,d1
  1461.         bsr    Read
  1462. ;        lea.l    ConnectText1,a0
  1463. ;        bsr    Printer
  1464.         pull    d2-d7/a2-a6
  1465.         clr.l    d0
  1466.         rts
  1467. DialEntry_OUT2:    lea.l    CRLFText1,a1
  1468.         bsr    GetLength
  1469.         lea.l    CRLFText1,a0
  1470.         bsr    Writer2
  1471.         lea.l    SkippedText1,a0
  1472.         bsr    Printer
  1473.         move.l    #50+25,d1
  1474.         lib    Dos,Delay
  1475.         pull    d2-d7/a2-a6
  1476.         move.l    #1,d0
  1477.         rts
  1478. DialEntry_OUT3:    lea.l    CancelledText1,a0
  1479.         bsr    Printer
  1480.         lea.l    CRLFText1,a1
  1481.         bsr    GetLength
  1482.         lea.l    CRLFText1,a0
  1483.         bsr    Writer2
  1484.         move.l    #50+25,d1
  1485.         lib    Dos,Delay
  1486.         pull    d2-d7/a2-a6
  1487.         move.l    #2,d0
  1488.         rts
  1489. DialEntry_OUT4:    lea.l    CRLFText1,a1
  1490.         bsr    GetLength
  1491.         lea.l    CRLFText1,a0
  1492.         bsr    Writer2
  1493.         move.l    #55,d1
  1494.         lib    Dos,Delay
  1495.         lea.l    RemoveText1,a0
  1496.         bsr    Printer
  1497.         pull    d2-d7/a2-a6
  1498.         move.l    #3,d0
  1499.         rts
  1500.  
  1501. Break:        lea.l    BreakText1,a0
  1502.         bsr    Printer
  1503.         clr.l    d0
  1504.         rts
  1505.  
  1506. ClearSer:    move.l    IORRequest,a1
  1507.         ABORTIO
  1508.         move.l    IORRequest,a1
  1509.         lib    Exec,WaitIO
  1510.         rts
  1511.  
  1512. ;Buffered read from a device
  1513. ;
  1514. ;Inputs d0 = Buffer length (maximum amount to read)
  1515. ;    d1 = Minimum amout to read
  1516. ;
  1517. ;Result d0 = Amount actually read
  1518. ;
  1519.  
  1520. Read:        push    d2-d7/a2-a6
  1521.         move.l    d0,d4
  1522.         move.l    d1,d5
  1523.  
  1524.         move.l    IOWRequest,a1            ;get amount of bytes
  1525.         move.w    #SDCMD_QUERY,IO_COMMAND(a1)    ;in buffer
  1526.         or.b    #IOF_QUICK,IO_FLAGS(a1)
  1527.         lib    Exec,DoIO
  1528.  
  1529.         move.l    IOWRequest,a1
  1530.         move.l    IO_ACTUAL(a1),d0
  1531.         beq    Read_OUT1
  1532.         cmp.l    d5,d0
  1533.         bmi    Read_OUT1
  1534.         cmp.l    d4,d0
  1535.         bls    Read1
  1536.         move.l    d4,d0            ;available > buffer size
  1537. Read1:        move.l    IORRequest,a1
  1538.         move.l    d0,IO_LENGTH(a1)
  1539.         BEGINIO
  1540.  
  1541.         move.l    IORRequest,a1
  1542.         move.l    IO_ACTUAL(a1),d0    ;even on an error we return
  1543.         add.l    d0,Received        ;correct amount in buffer
  1544.         pull    d2-d7/a2-a6
  1545.         rts
  1546.  
  1547. Read_OUT1:    clr.l    d0
  1548.         pull    d2-d7/a2-a6
  1549.         rts
  1550.  
  1551. Writer:        tst.w    SerOpen
  1552.         beq    Writer1.1
  1553.         add.l    #1,Sent
  1554.         move.l    IOWRequest,a1
  1555.         move.l    #1,IO_LENGTH(a1)        ;writes in one byte "chunks"
  1556.         move.w    #CMD_WRITE,IO_COMMAND(a1)
  1557.         lea.l    Buffer1,a0
  1558.         move.l    a0,IO_DATA(a1)
  1559.         lib    Exec,DoIO        ;May freeze, too bad
  1560. Writer1.1:    rts
  1561.  
  1562. ;Writes string to serial port
  1563. ;
  1564. ;D0 = Length
  1565. ;A0 = String
  1566.  
  1567. Writer2:    tst.w    SerOpen
  1568.         beq    Writer2.1
  1569.         add.l    d0,Sent
  1570.         move.l    IOWRequest,a1
  1571.         move.w    #CMD_WRITE,IO_COMMAND(a1)
  1572.         move.l    d0,IO_LENGTH(a1)
  1573.         move.l    a0,IO_DATA(a1)
  1574.         lib    Exec,DoIO        ;May freeze, too bad
  1575. Writer2.1:    rts
  1576.  
  1577. DoCapture:    move.l    CaptureFile,d1
  1578.         beq    DoCapture_OUT
  1579.         lea.l    Buffer4,a1
  1580.         bsr    GetLength
  1581.         move.l    d0,d3
  1582.         lea.l    Buffer4,a0
  1583.         move.l    a0,d2
  1584.         lib    Dos,Write
  1585. DoCapture_OUT:    rts
  1586.  
  1587. SetSerParams:    move.l    IOWRequest,a1
  1588.         clr.l    IO_LENGTH(a1)
  1589.         clr.l    IO_DATA(a1)
  1590.         clr.l    IO_EXTFLAGS(a1)
  1591.         move.b    #SERF_XDISABLED,IO_SERFLAGS(a1)
  1592.         move.w    #SDCMD_SETPARAMS,IO_COMMAND(a1)
  1593.         move.l    Speed,IO_BAUD(a1)
  1594.         move.b    DataBits,IO_READLEN(a1)
  1595.         move.b    DataBits,IO_WRITELEN(a1)
  1596.         move.b    StopBits,IO_STOPBITS(a1)
  1597.         lib    Exec,DoIO
  1598.         rts
  1599.  
  1600. SendBREAK:    move.l    IOWRequest,a1
  1601.         move.w    #SDCMD_BREAK,IO_COMMAND(a1)
  1602.         or.b    #IOF_QUICK,IO_FLAGS(a1)
  1603.         lib    Exec,DoIO
  1604.         rts
  1605.  
  1606. DoCLIInput:    lea.l    Buffer1,a0
  1607.         cmp.b    #CR,Buffer1
  1608.         beq    DoCLIInput3
  1609.         cmp.b    #LF,Buffer1
  1610.         beq    DoCLIInput4
  1611.         cmp.b    #BS,Buffer1
  1612.         beq    DoCLIInput5
  1613.         cmp.b    #DEL,Buffer1
  1614.         beq    DoCLIInput6
  1615.         cmp.b    #CSI,Buffer1
  1616.         beq    DoCSI
  1617. DoCLIInput1:    bsr    Writer
  1618.         btst.b    #0,LocalEcho
  1619.         beq    DoCLIInput2
  1620.         lea.l    Buffer1,a0
  1621.         bsr    Printer
  1622. DoCLIInput2:    rts
  1623. DoCLIInput3:    tst.b    CRTranslate
  1624.         beq    DoCLIInput1
  1625.         cmp.b    #1,CRTranslate
  1626.         beq    DoCLIInput2
  1627.         cmp.b    #2,CRTranslate
  1628.         bne    DoCLIInput2
  1629.         bsr    DoCLIInput1
  1630.         move.b    #LF,Buffer1
  1631.         bra    DoCLIInput1
  1632. DoCLIInput4:    tst.b    LFTranslate
  1633.         beq    DoCLIInput1
  1634.         cmp.b    #1,LFTranslate
  1635.         beq    DoCLIInput2
  1636.         cmp.b    #2,LFTranslate
  1637.         bne    DoCLIInput2
  1638.         move.b    #CR,Buffer1
  1639.         bsr    DoCLIInput1
  1640.         move.b    #LF,Buffer1
  1641.         bra    DoCLIInput1
  1642. DoCLIInput5:    tst.b    SwapBSDEL
  1643.         beq    DoCLIInput1
  1644.         move.b    #DEL,Buffer1
  1645.         bra    DoCLIInput1
  1646. DoCLIInput6:    tst.b    SwapBSDEL
  1647.         beq    DoCLIInput1
  1648.         move.b    #BS,Buffer1
  1649.         bra    DoCLIInput1
  1650.  
  1651. DoCSI:        tst.b    CursorRemap
  1652.         beq    DoCSI_OUT
  1653.         move.l    _stdin,d1
  1654.         lea.l    Buffer1,a0
  1655.         move.l    a0,d2
  1656.         move.l    #1,d3
  1657.         lib    Dos,Read
  1658.         cmp.b    #Cursor_Up,Buffer1
  1659.         beq    DoCSI1
  1660.         cmp.b    #Cursor_Down,Buffer1
  1661.         beq    DoCSI2
  1662.         cmp.b    #Cursor_Left,Buffer1
  1663.         beq    DoCSI3
  1664.         cmp.b    #Cursor_Right,Buffer1
  1665.         beq    DoCSI4
  1666.         bra    DoCLIInput1
  1667. DoCSI1:        move.b    #CTRL_P,Buffer1
  1668.         bra    DoCLIInput1
  1669. DoCSI2:        move.b    #CTRL_N,Buffer1
  1670.         bra    DoCLIInput1
  1671. DoCSI3:        move.b    #CTRL_B,Buffer1
  1672.         bra    DoCLIInput1
  1673. DoCSI4:        move.b    #CTRL_F,Buffer1
  1674. DoCSI_OUT:    bra    DoCLIInput1
  1675.  
  1676. DoSerialInput:    push    d0-d7/a2-a6
  1677.         lea.l    Buffer3,a0
  1678.         lea.l    Buffer4,a1
  1679. DoSerialInput1:    tst.b    (a0)
  1680.         beq    DoSerialInput3.1
  1681.         cmp.b    #CR,(a0)
  1682.         beq    DoSerialInput4
  1683.         cmp.b    #LF,(a0)
  1684.         beq    DoSerialInput6
  1685. DoSerialInput2:    move.b    (a0)+,(a1)+
  1686.         bra    DoSerialInput1
  1687. DoSerialInput3:    pull    d0-d7/a2-a6
  1688.         rts
  1689. DoSerialInput3.1: clr.b    (a1)
  1690.         pull    d0-d7/a2-a6
  1691.         rts
  1692. DoSerialInput4:    tst.b    CRTranslateIn
  1693.         beq    DoSerialInput2
  1694.         cmp.b    #1,CRTranslateIn
  1695.         bne    DoSerialInput5
  1696.         add.l    #1,a0
  1697.         bra    DoSerialInput1
  1698. DoSerialInput5:    cmp.b    #2,CRTranslateIn
  1699.         bne    DoSerialInput2
  1700.         move.b    #CR,(a1)+
  1701.         move.b    #LF,(a1)+
  1702.         add.l    #1,a0
  1703.         bra    DoSerialInput1
  1704. DoSerialInput6:    tst.b    LFTranslateIn
  1705.         beq    DoSerialInput2
  1706.         cmp.b    #1,LFTranslateIn
  1707.         bne    DoSerialInput7
  1708.         add.l    #1,a0
  1709.         bra    DoSerialInput1
  1710. DoSerialInput7:    cmp.b    #2,LFTranslateIn
  1711.         bne    DoSerialInput2
  1712.         move.b    #CR,(a1)+
  1713.         move.b    #LF,(a1)+
  1714.         add.l    #1,a0
  1715.         bra    DoSerialInput1
  1716.  
  1717. ;gets anykey from user
  1718. ;
  1719. ;Results d0 = -1 for error, otherwise d0 = key pressed
  1720.  
  1721. GetAnyKey:    lea.l    AnyKeyText1,a0
  1722.         bsr    Printer
  1723.         move.l    _stdin,d1
  1724.         lib    Dos,Flush
  1725.         move.l    _stdin,d1
  1726.         lib    Dos,FGetC
  1727.         lea.l    CRLFText1,a0
  1728.         bsr    Printer
  1729.         rts
  1730.  
  1731. ;Gets a string from the user, null terminated
  1732. ;
  1733. ;Inputs    a0 = pointer to buffer
  1734. ;    d3 = length of buffer
  1735. ;
  1736. ;Result    d0 = -1 if failed
  1737. ;
  1738.  
  1739. GetString:    push    a0
  1740.         push    a0
  1741.         move.l    _stdin,d1
  1742.         move.l    #FALSE,d2
  1743.         lib    Dos,SetMode
  1744.  
  1745.         move.l    _stdin,d1
  1746.         lib    Dos,Flush
  1747.  
  1748.         move.l    _stdin,d1
  1749.         pull    d2
  1750.         lib    Dos,FGets
  1751.         tst.l    d0
  1752.         beq    GetString_OUT2
  1753.  
  1754.         pull    a0
  1755.         bsr    GetLLength
  1756.         clr.b    -1(a0,d1.l)    ;remove LF
  1757.  
  1758.         move.l    _stdin,d1
  1759.         move.l    #TRUE,d2
  1760.         lib    Dos,SetMode
  1761.  
  1762.         move.l    _stdin,d1
  1763.         lib    Dos,Flush
  1764.  
  1765.         clr.l    d0
  1766.         rts
  1767.  
  1768. GetString_OUT2:    move.l    #-1,d0
  1769.         rts
  1770.  
  1771. ;Gets input from user
  1772. ;
  1773. ;Results d0 = 0 for N, 1 for S, 2 for A, -1 for error
  1774.  
  1775. GetNSA:        move.l    _stdin,d1
  1776.         lib    Dos,FGetC
  1777.         cmp.l    #-1,d0
  1778.         beq    GetNSA_ERR1
  1779.         cmp.l    #'a',d0
  1780.         bcs    GetNSA0.1
  1781.         cmp.l    #'z',d0
  1782.         bhi    GetNSA0.1
  1783.         sub.l    #32,d0
  1784. GetNSA0.1:    cmp.l    #'N',d0
  1785.         beq    GetNSA1
  1786.         cmp.l    #'S',d0
  1787.         beq    GetNSA2
  1788.         cmp.l    #'A',d0
  1789.         beq    GetNSA3
  1790.         cmp.l    #CR,d0
  1791.         beq    GetNSA_ERR1
  1792.         cmp.l    #LF,d0
  1793.         beq    GetNSA_ERR1
  1794.         bra    GetNSA
  1795. GetNSA1:    lea.l    NoneText1,a0
  1796.         bsr    Printer
  1797.         move.l    #0,d0
  1798.         rts
  1799. GetNSA2:    lea.l    StripText1,a0
  1800.         bsr    Printer
  1801.         move.l    #1,d0
  1802.         rts
  1803. GetNSA3:    lea.l    AddText1,a0
  1804.         bsr    Printer
  1805.         move.l    #2,d0
  1806.         rts
  1807. GetNSA_ERR1:    move.l    #-1,d0
  1808.         rts
  1809.  
  1810. ;Give NSA
  1811. ;
  1812. ;Inputs d0 = NSA qualifier(?)
  1813. ;
  1814.  
  1815. GiveNSA:    tst.b    d0
  1816.         beq    GiveNSA1
  1817.         cmp.b    #1,d0
  1818.         beq    GiveNSA2
  1819.         cmp.b    #2,d0
  1820.         beq    GiveNSA3
  1821.         lea.l    NAText1,a0
  1822.         bsr    Printer
  1823.         rts
  1824. GiveNSA1:    lea.l    NText1,a0
  1825.         bsr    Printer
  1826.         rts
  1827. GiveNSA2:    lea.l    SText1,a0
  1828.         bsr    Printer
  1829.         rts
  1830. GiveNSA3:    lea.l    AText1,a0
  1831.         bsr    Printer
  1832.         rts
  1833.  
  1834. Nope:        lea.l    SpaceText1,a0
  1835.         bsr    Printer
  1836.         rts
  1837. Yep:        lea.l    StarText1,a0
  1838.         bsr    Printer
  1839.         rts
  1840.  
  1841. GiveSettings:    clr.l    SpeedText90
  1842.         clr.l    SpeedText90+4
  1843.         lea.l    fstrl3,a0        ;HEX->ASCII
  1844.         lea.l    Speed,a1        ;Number2Print
  1845.         lea.l    PutChProc,a2
  1846.         lea.l    SpeedText90,a3        ;Destination
  1847.         lib    Exec,RawDoFmt
  1848.  
  1849.         lea.l    CurrentText1,a0
  1850.         bsr    Printer
  1851.  
  1852.         tst.l    Speed
  1853.         beq    GiveSettings0.1
  1854.         lea.l    SpeedText90,a0
  1855.         bsr    Printer
  1856.         bra    GiveSettings0.2
  1857.  
  1858. GiveSettings0.1: lea.l    DefText1,a0
  1859.         bsr    Printer
  1860.  
  1861. GiveSettings0.2: lea.l    CurrentText2,a0
  1862.         bsr    Printer
  1863.  
  1864.         tst.w    LocalEcho
  1865.         bne    GiveSettings1
  1866.         bsr    Nope
  1867.         bra    GiveSettings2
  1868. GiveSettings1:    bsr    Yep
  1869.  
  1870. GiveSettings2:    lea.l    CurrentText7,a0
  1871.         bsr    Printer
  1872.  
  1873.         lea.l    CurrentText3,a0
  1874.         bsr    Printer
  1875.  
  1876.         move.b    CRTranslate,d0
  1877.         bsr    GiveNSA
  1878.  
  1879.         lea.l    CurrentText4,a0
  1880.         bsr    Printer
  1881.  
  1882.         move.b    LFTranslate,d0
  1883.         bsr    GiveNSA
  1884.  
  1885.         lea.l    CurrentText7,a0
  1886.         bsr    Printer
  1887.  
  1888.         lea.l    CurrentText5,a0
  1889.         bsr    Printer
  1890.  
  1891.         move.b    CRTranslateIn,d0
  1892.         bsr    GiveNSA
  1893.  
  1894.         lea.l    CurrentText6,a0
  1895.         bsr    Printer
  1896.  
  1897.         move.b    LFTranslateIn,d0
  1898.         bsr    GiveNSA
  1899.  
  1900.         lea.l    CurrentText7,a0
  1901.         bsr    Printer
  1902.  
  1903.         lea.l    CurrentText8,a0
  1904.         bsr    Printer
  1905.  
  1906.         cmp.b    #7,DataBits
  1907.         bne    GiveSettings3
  1908.         lea.l    SevenText1,a0
  1909.         bsr    Printer
  1910.         bra    GiveSettings4
  1911. GiveSettings3:    cmp.b    #8,DataBits
  1912.         bne    GiveSettings3.1
  1913.         lea.l    EightText1,a0
  1914.         bsr    Printer
  1915.         bra    GiveSettings4
  1916. GiveSettings3.1: lea.l    DefText1,a0
  1917.         bsr    Printer
  1918.  
  1919. GiveSettings4:    lea.l    CurrentText9,a0
  1920.         bsr    Printer
  1921.  
  1922.         cmp.b    #1,StopBits
  1923.         bne    GiveSettings5
  1924.         lea.l    OneText1,a0
  1925.         bsr    Printer
  1926.         bra    GiveSettings6
  1927. GiveSettings5:    cmp.b    #2,StopBits
  1928.         bne    GiveSettings5.1
  1929.         lea.l    TwoText1,a0
  1930.         bsr    Printer
  1931.         bra    GiveSettings6
  1932. GiveSettings5.1: lea.l    DefText1,a0
  1933.         bsr    Printer
  1934.  
  1935. GiveSettings6:    lea.l    CurrentText7,a0
  1936.         bsr    Printer
  1937.  
  1938.         lea.l    CurrentText9.1,a0
  1939.         bsr    Printer
  1940.  
  1941.         tst.b    SwapBSDEL
  1942.         bne    GiveSettings7
  1943.         bsr    Nope
  1944.         bra    GiveSettings8
  1945. GiveSettings7:    bsr    Yep
  1946.  
  1947. GiveSettings8:    lea.l    CurrentText9.11,a0
  1948.         bsr    Printer
  1949.  
  1950.         tst.b    UseANSI
  1951.         bne    GiveSettings9
  1952.         bsr    Nope
  1953.         bra    GiveSettings10
  1954. GiveSettings9:    bsr    Yep
  1955.  
  1956. GiveSettings10:    lea.l    CurrentText7,a0
  1957.         bsr    Printer
  1958.  
  1959.         lea.l    CurrentText9.12,a0
  1960.         bsr    Printer
  1961.  
  1962.         tst.b    CursorRemap
  1963.         bne    GiveSettings11
  1964.         bsr    Nope
  1965.         bra    GiveSettings12
  1966. GiveSettings11:    bsr    Yep
  1967.  
  1968. GiveSettings12:    lea.l    CurrentText7,a0
  1969.         bsr    Printer
  1970.  
  1971.         lea.l    CurrentText9.2,a0
  1972.         bsr    Printer
  1973.  
  1974.         clr.w    CPAssignText
  1975.         clr.l    CTRLPASCII
  1976.         move.b    CPAssign,CPAssignText+1
  1977.         lea.l    fstrl4,a0        ;HEX->ASCII
  1978.         lea.l    CPAssignText,a1        ;Number2Print
  1979.         lea.l    PutChProc,a2
  1980.         lea.l    CTRLPASCII,a3        ;Destination
  1981.         lib    Exec,RawDoFmt
  1982.  
  1983.         lea.l    CTRLPASCII,a0
  1984.         bsr    Printer
  1985.  
  1986.         lea.l    CRLFText1,a0
  1987.         bsr    Printer
  1988.  
  1989.         lea.l    CurrentText9.3,a0
  1990.         bsr    Printer
  1991.  
  1992.         lea.l    ULProgram,a0
  1993.         bsr    Printer
  1994.  
  1995.         lea.l    CurrentText9.4,a0
  1996.         bsr    Printer
  1997.  
  1998.         lea.l    DLProgram,a0
  1999.         bsr    Printer
  2000.  
  2001.         lea.l    CurrentText9.5,a0
  2002.         bsr    Printer
  2003.  
  2004.         lea.l    ULDir,a0
  2005.         bsr    Printer
  2006.  
  2007.         lea.l    CurrentText9.6,a0
  2008.         bsr    Printer
  2009.  
  2010.         lea.l    DLDir,a0
  2011.         bsr    Printer
  2012.  
  2013.         lea.l    CRLFText1,a0
  2014.         bsr    Printer
  2015.  
  2016.         lea.l    CurrentText10,a0
  2017.         bsr    Printer
  2018.  
  2019.         lea.l    SerDevNBuffer1,a0
  2020.         bsr    Printer
  2021.  
  2022.         lea.l    CurrentText11,a0
  2023.         bsr    Printer
  2024.  
  2025.         lea.l    fstrl3,a0        ;HEX->ASCII
  2026.         lea.l    SerUnit,a1        ;Number2Print
  2027.         lea.l    PutChProc,a2
  2028.         lea.l    CurrentText12,a3    ;Destination
  2029.         lib    Exec,RawDoFmt
  2030.  
  2031.         lea.l    CurrentText12,a0
  2032.         bsr    Printer
  2033.  
  2034.         lea.l    CurrentText13,a0
  2035.         bsr    Printer
  2036.  
  2037.         lea.l    FileNameBuf1,a0
  2038.         bsr    Printer
  2039.  
  2040.         lea.l    CRLFText1,a0
  2041.         bsr    Printer
  2042.  
  2043.         rts
  2044.  
  2045. GiveStats:    lea.l    fstrl1,a0        ;HEX->ASCII
  2046.         lea.l    Received,a1        ;Number2Print
  2047.         lea.l    PutChProc,a2
  2048.         lea.l    ReceivedText1,a3    ;Destination
  2049.         lib    Exec,RawDoFmt
  2050.  
  2051.         lea.l    fstrl2,a0        ;HEX->ASCII
  2052.         lea.l    Sent,a1            ;Number2Print
  2053.         lea.l    PutChProc,a2
  2054.         lea.l    SentText1,a3        ;Destination
  2055.         lib    Exec,RawDoFmt
  2056.  
  2057.         lea.l    StatsText1,a0
  2058.         bsr    Printer
  2059.         lea.l    ReceivedText1,a0
  2060.         bsr    Printer
  2061.         lea.l    SentText1,a0
  2062.         bsr    Printer
  2063.         lea.l    CRLFText1,a0
  2064.         bsr    Printer
  2065.         rts
  2066.  
  2067. PrintEntries:    tst.b    DialPrefix
  2068.         beq    PrintEntries1
  2069.         lea.l    PrefixText1,a0
  2070.         bsr    Printer
  2071.         lea.l    DialPrefix,a0
  2072.         bsr    Printer
  2073.         lea.l    CRLFText1,a0
  2074.         bsr    Printer
  2075. PrintEntries1:    tst.b    Entry1
  2076.         beq    PrintEntries2
  2077.         lea.l    EntryText1,a0
  2078.         bsr    Printer
  2079.         lea.l    Entry1,a0
  2080.         bsr    Printer
  2081.         lea.l    CRLFText1,a0
  2082.         bsr    Printer
  2083. PrintEntries2:    tst.b    Entry2
  2084.         beq    PrintEntries3
  2085.         lea.l    EntryText2,a0
  2086.         bsr    Printer
  2087.         lea.l    Entry2,a0
  2088.         bsr    Printer
  2089.         lea.l    CRLFText1,a0
  2090.         bsr    Printer
  2091. PrintEntries3:    tst.b    Entry3
  2092.         beq    PrintEntries4
  2093.         lea.l    EntryText3,a0
  2094.         bsr    Printer
  2095.         lea.l    Entry3,a0
  2096.         bsr    Printer
  2097.         lea.l    CRLFText1,a0
  2098.         bsr    Printer
  2099. PrintEntries4:    tst.b    Entry4
  2100.         beq    PrintEntries5
  2101.         lea.l    EntryText4,a0
  2102.         bsr    Printer
  2103.         lea.l    Entry4,a0
  2104.         bsr    Printer
  2105.         lea.l    CRLFText1,a0
  2106.         bsr    Printer
  2107. PrintEntries5:    tst.b    Entry5
  2108.         beq    PrintEntries6
  2109.         lea.l    EntryText5,a0
  2110.         bsr    Printer
  2111.         lea.l    Entry5,a0
  2112.         bsr    Printer
  2113.         lea.l    CRLFText1,a0
  2114.         bsr    Printer
  2115. PrintEntries6:    tst.b    Entry6
  2116.         beq    PrintEntries7
  2117.         lea.l    EntryText6,a0
  2118.         bsr    Printer
  2119.         lea.l    Entry6,a0
  2120.         bsr    Printer
  2121.         lea.l    CRLFText1,a0
  2122.         bsr    Printer
  2123. PrintEntries7:    tst.b    Entry7
  2124.         beq    PrintEntries8
  2125.         lea.l    EntryText7,a0
  2126.         bsr    Printer
  2127.         lea.l    Entry7,a0
  2128.         bsr    Printer
  2129.         lea.l    CRLFText1,a0
  2130.         bsr    Printer
  2131. PrintEntries8:    tst.b    Entry8
  2132.         beq    PrintEntries9
  2133.         lea.l    EntryText8,a0
  2134.         bsr    Printer
  2135.         lea.l    Entry8,a0
  2136.         bsr    Printer
  2137.         lea.l    CRLFText1,a0
  2138.         bsr    Printer
  2139. PrintEntries9:    tst.b    Entry9
  2140.         beq    PrintEntries10
  2141.         lea.l    EntryText9,a0
  2142.         bsr    Printer
  2143.         lea.l    Entry9,a0
  2144.         bsr    Printer
  2145.         lea.l    CRLFText1,a0
  2146.         bsr    Printer
  2147. PrintEntries10:    tst.b    Entry10
  2148.         beq    PrintEntries11
  2149.         lea.l    EntryText10,a0
  2150.         bsr    Printer
  2151.         lea.l    Entry10,a0
  2152.         bsr    Printer
  2153.         lea.l    CRLFText1,a0
  2154.         bsr    Printer
  2155. PrintEntries11:    rts
  2156.  
  2157. PrintSelect:    lea.l    SelectedText1,a0
  2158.         bsr    Printer
  2159.         lea.l    SelectText1,a0
  2160.         bsr    Printer
  2161.         tst.b    EntrySelected1
  2162.         beq    PrintSelect1
  2163.         lea.l    SelectText11,a0
  2164.         bsr    Printer
  2165.         bra    PrintSelect2
  2166. PrintSelect1:    lea.l    SelectText12,a0
  2167.         bsr    Printer
  2168. PrintSelect2:    lea.l    SelectText2,a0
  2169.         bsr    Printer
  2170.         tst.b    EntrySelected2
  2171.         beq    PrintSelect3
  2172.         lea.l    SelectText11,a0
  2173.         bsr    Printer
  2174.         bra    PrintSelect4
  2175. PrintSelect3:    lea.l    SelectText12,a0
  2176.         bsr    Printer
  2177. PrintSelect4:    lea.l    SelectText3,a0
  2178.         bsr    Printer
  2179.         tst.b    EntrySelected3
  2180.         beq    PrintSelect5
  2181.         lea.l    SelectText11,a0
  2182.         bsr    Printer
  2183.         bra    PrintSelect6
  2184. PrintSelect5:    lea.l    SelectText12,a0
  2185.         bsr    Printer
  2186. PrintSelect6:    lea.l    SelectText4,a0
  2187.         bsr    Printer
  2188.         tst.b    EntrySelected4
  2189.         beq    PrintSelect7
  2190.         lea.l    SelectText11,a0
  2191.         bsr    Printer
  2192.         bra    PrintSelect8
  2193. PrintSelect7:    lea.l    SelectText12,a0
  2194.         bsr    Printer
  2195. PrintSelect8:    lea.l    SelectText5,a0
  2196.         bsr    Printer
  2197.         tst.b    EntrySelected5
  2198.         beq    PrintSelect9
  2199.         lea.l    SelectText11,a0
  2200.         bsr    Printer
  2201.         bra    PrintSelect10
  2202. PrintSelect9:    lea.l    SelectText12,a0
  2203.         bsr    Printer
  2204. PrintSelect10:    lea.l    SelectText6,a0
  2205.         bsr    Printer
  2206.         tst.b    EntrySelected6
  2207.         beq    PrintSelect11
  2208.         lea.l    SelectText11,a0
  2209.         bsr    Printer
  2210.         bra    PrintSelect12
  2211. PrintSelect11:    lea.l    SelectText12,a0
  2212.         bsr    Printer
  2213. PrintSelect12:    lea.l    SelectText7,a0
  2214.         bsr    Printer
  2215.         tst.b    EntrySelected7
  2216.         beq    PrintSelect13
  2217.         lea.l    SelectText11,a0
  2218.         bsr    Printer
  2219.         bra    PrintSelect14
  2220. PrintSelect13:    lea.l    SelectText12,a0
  2221.         bsr    Printer
  2222. PrintSelect14:    lea.l    SelectText8,a0
  2223.         bsr    Printer
  2224.         tst.b    EntrySelected8
  2225.         beq    PrintSelect15
  2226.         lea.l    SelectText11,a0
  2227.         bsr    Printer
  2228.         bra    PrintSelect16
  2229. PrintSelect15:    lea.l    SelectText12,a0
  2230.         bsr    Printer
  2231. PrintSelect16:    lea.l    SelectText9,a0
  2232.         bsr    Printer
  2233.         tst.b    EntrySelected9
  2234.         beq    PrintSelect17
  2235.         lea.l    SelectText11,a0
  2236.         bsr    Printer
  2237.         bra    PrintSelect18
  2238. PrintSelect17:    lea.l    SelectText12,a0
  2239.         bsr    Printer
  2240. PrintSelect18:    lea.l    SelectText0,a0
  2241.         bsr    Printer
  2242.         tst.b    EntrySelected0
  2243.         beq    PrintSelect19
  2244.         lea.l    SelectText13,a0
  2245.         bsr    Printer
  2246.         bra    PrintSelect20
  2247. PrintSelect19:    lea.l    SelectText14,a0
  2248.         bsr    Printer
  2249. PrintSelect20:    lea.l    CRLFText1,a0
  2250.         bsr    Printer
  2251.         rts
  2252.  
  2253. LoadPrefsFile:    move.l    CLArray1,d1
  2254.         move.l    #MODE_OLDFILE,d2
  2255.         lib    Dos,Open
  2256.         move.l    d0,PrefsFile
  2257.         bne    LoadPrefsFile1
  2258.  
  2259.         lea.l    FileErrorText1,a0
  2260.         bsr    Printer
  2261.         move.l    CLArray1,a0
  2262. ;        lea.l    FileNameBuf1,a0
  2263.         bsr    Printer
  2264.         lea.l    CRLFText1,a0
  2265.         bsr    Printer
  2266.         bra    LoadPF_ERR1
  2267.  
  2268. LoadPrefsFile1:    move.l    PrefsFile,d1
  2269.         lea.l    PrefsStart,a0
  2270.         move.l    a0,d2
  2271.         move.l    #2,d3
  2272.         lib    Dos,Read
  2273.         cmp.l    #2,d0
  2274.         beq    LoadPrefsFile2
  2275.  
  2276.         lea.l    FileErrorText2,a0
  2277.         bsr    Printer
  2278.         bra    LoadPF_ERR1
  2279.  
  2280. LoadPrefsFile2: cmp.w    #'ST',PrefsStart
  2281.         beq    LoadPrefsFile3
  2282.  
  2283.         lea.l    FileErrorText3,a0
  2284.         bsr    Printer
  2285.         bra    LoadPF_ERR1
  2286.  
  2287. LoadPrefsFile3:    move.l    PrefsFile,d1
  2288.         lea.l    SerDevNBuffer1,a0
  2289.         move.l    a0,d2
  2290.         move.l    #PrefsSize-2,d3
  2291.         lib    Dos,Read
  2292.         cmp.l    #PrefsSize-2,d0
  2293.         beq    LoadPrefsFile4
  2294.  
  2295.         lea.l    FileErrorText2,a0
  2296.         bsr    Printer
  2297.         bra    LoadPF_ERR2
  2298.  
  2299. LoadPrefsFile4:
  2300. LoadPF_OUT:    bsr    KillPFile
  2301.         move.l    #-1,d0
  2302.         rts
  2303. LoadPF_ERR1:    clr.l    d0
  2304.         rts
  2305. LoadPF_ERR2:    bsr    KillPFile
  2306.         clr.l    d0
  2307.         rts
  2308.  
  2309. SavePrefsFile:    lea.l    FileNameBuf1,a0
  2310.         move.l    a0,d1
  2311.         move.l    #MODE_NEWFILE,d2
  2312.         lib    Dos,Open
  2313.         move.l    d0,PrefsFile
  2314.         bne    SavePrefsFile1
  2315.  
  2316.         lea.l    FileErrorText1,a0
  2317.         bsr    Printer
  2318.         lea.l    FileNameBuf1,a0
  2319.         bsr    Printer
  2320.         lea.l    CRLFText1,a0
  2321.         bsr    Printer
  2322.         bra    SavePF_ERR1
  2323.  
  2324. SavePrefsFile1:    move.w    #'ST',PrefsStart
  2325.  
  2326.         move.l    PrefsFile,d1
  2327.         lea.l    PrefsStart,a0
  2328.         move.l    a0,d2
  2329.         move.l    #PrefsSize,d3
  2330.         lib    Dos,Write
  2331.         cmp.l    #PrefsSize,d0
  2332.         beq    SavePF_OUT
  2333.  
  2334.         lea.l    FileErrorText4,a0
  2335.         bsr    Printer
  2336.         bra    SavePF_ERR2
  2337.  
  2338. SavePF_OUT:    bsr    KillPFile
  2339.         move.l    #-1,d0
  2340.         rts
  2341. SavePF_ERR1:    clr.l    d0
  2342.         rts
  2343. SavePF_ERR2:    bsr    KillPFile
  2344.         clr.l    d0
  2345.         rts
  2346.  
  2347. KillPFile:    move.l    PrefsFile,d1
  2348.         beq    KillPFile1
  2349.         lib    Dos,Close
  2350.         clr.l    PrefsFile
  2351. KillPFile1:    rts
  2352.  
  2353. ShutDown:    bsr    CloseSerial
  2354. ShutDown9000:    move.l    IORRequest,a0
  2355.         lib    Exec,DeleteIORequest
  2356.  
  2357.         move.l    SRRPort,a1
  2358.         cmp.l    #$00,a1
  2359.         beq    ShutDown8900
  2360.         lib    Exec,RemPort
  2361.  
  2362. ShutDown8900:    move.l    SRRPort,a0
  2363.         lib    Exec,DeleteMsgPort
  2364.  
  2365.         move.l    IOWRequest,a0
  2366.         lib    Exec,DeleteIORequest
  2367.  
  2368.         move.l    SWRPort,a1
  2369.         cmp.l    #$00,a1
  2370.         beq    ShutDown8800
  2371.         lib    Exec,RemPort
  2372.  
  2373. ShutDown8800:    move.l    SWRPort,a0
  2374.         lib    Exec,DeleteMsgPort
  2375.  
  2376.         move.l    _stdin,d1
  2377.         beq    ShutDown8700
  2378.         move.l    #FALSE,d2
  2379.         lib    Dos,SetMode
  2380.  
  2381. ShutDown8700:    move.l    OptPort,a1
  2382.         cmp.l    #$00,a1
  2383.         beq    ShutDown8600
  2384.         lib    Exec,RemPort
  2385.  
  2386. ShutDown8600:    move.l    OptPort,a0
  2387.         lib    Exec,DeleteMsgPort
  2388.  
  2389. ShutDown8000:    bsr    KillPFile
  2390.  
  2391.         move.l    CaptureFile,d1
  2392.         beq    ShutDown7000
  2393.         lib    Dos,Close
  2394. ShutDown7000:    move.l    RDArgs1,d1
  2395.         beq    ShutDown6900
  2396.         lib    Dos,FreeArgs
  2397. ShutDown6900:
  2398.  
  2399. ShutDown1000:    closlib    Dos
  2400.         pull    d2-d7/a2-a6
  2401.         clr.l    d0
  2402.         rts
  2403.  
  2404. ;open serial.device
  2405.  
  2406. OpenSerial:    lea.l    SerDevNBuffer1,a0
  2407.         move.l    SerUnit,d0
  2408.         move.l    IORRequest,a1
  2409.         clr.l    IO_EXTFLAGS(a1)
  2410.         move.b    #SERF_SHARED,IO_SERFLAGS(a1)
  2411.         clr.l    d1                ;no flags
  2412.         lib    Exec,OpenDevice
  2413.         tst.l    d0
  2414.         bne    NoSerial
  2415.         move.w    #$1,SerOpen        ;just to tell if open
  2416.  
  2417. ;Copy info from one req to the other
  2418.  
  2419.         move.l    IORRequest,a0
  2420.         move.l    IOWRequest,a1
  2421.         move.l    IO_DEVICE(a0),IO_DEVICE(a1)
  2422.         move.l    IO_UNIT(a0),IO_UNIT(a1)
  2423. ;        add.l    #48,a0            ;get start of ioser
  2424. ;        add.l    #48,a1
  2425. ;        move.l    #34,d0
  2426. ;        lib    Exec,CopyMem
  2427.  
  2428.         move.l    IORRequest,a1
  2429.         move.w    #CMD_READ,IO_COMMAND(a1)
  2430.         or.b    #IOF_QUICK,IO_FLAGS(a1)
  2431.         lea.l    Buffer3,a0
  2432.         move.l    a0,IO_DATA(a1)
  2433.         move.l    #1,IO_LENGTH(a1)
  2434.  
  2435.         move.l    #BUFLEN,d0    ;just so the request is used
  2436.         move.l    #0,d1        ;TRY: #1
  2437.         bsr    Read
  2438.  
  2439.         clr.l    d0
  2440.         rts
  2441.  
  2442. CloseSerial:    tst.w    SerOpen
  2443.         beq    CloseSerial1
  2444.         bsr    ClearSer
  2445.         move.l    IORRequest,a1
  2446.         lib    Exec,CloseDevice
  2447.         clr.w    SerOpen
  2448. CloseSerial1:    rts
  2449.  
  2450. ;Get length of text in given address
  2451. ;
  2452. ;Input a1 = Address of null terminated text string
  2453. ;
  2454. ;Result d0 = Length
  2455.  
  2456. GetLength:    clr.l    d0
  2457.         cmp.l    #$00,a1        ;fixes enforcer hit
  2458.         beq    GetLength_OUT
  2459. GetLength2:    add.l    #1,d0
  2460.         tst.b    (a1)+
  2461.         bne    GetLength2
  2462.         sub.l    #1,d0        ;don't include NULL
  2463. GetLength_OUT:    rts
  2464.  
  2465.  
  2466. ;Get line length of text in given address, including LF
  2467. ;
  2468. ;Input a0 = Address of LF terminated text string
  2469. ;
  2470. ;Result d1 = Length
  2471.  
  2472. GetLLength:    push    a0
  2473.         clr.l    d1
  2474.         cmp.l    #$00,a0        ;fixes enforcer hit
  2475.         beq    GetLLength_OUT
  2476. GetLLength2:    add.l    #1,d1
  2477.         cmp.b    #10,(a0)+
  2478.         bne    GetLLength2
  2479. GetLLength_OUT:    pull    a0
  2480.         rts
  2481.  
  2482. ;Finds a string in another string
  2483. ;
  2484. ;Inputs    a0 = Pointer to string1 (from what to find)
  2485. ;    d0 = Lower byte ('C' out of 'CO') (what to search for)
  2486. ;    d1 = Higher byte ('O' out of 'CO')
  2487. ;
  2488. ;Result    d0 = 0 if not found
  2489. ;
  2490. ;BUGS
  2491.  
  2492. FindWord:    tst.b    (a0)
  2493.         beq    FindWord1
  2494.         cmp.b    (a0),d0
  2495.         beq    FindWord2
  2496.         add.l    #1,a0
  2497.         bra    FindWord
  2498. FindWord1:    clr.l    d0        ;keep right before rts
  2499.         rts
  2500. FindWord2:    add.l    #1,a0
  2501.         tst.b    (a0)
  2502.         beq    FindWord1
  2503.         cmp.b    (a0),d1
  2504.         bne    FindWord2
  2505.         move.l    #-1,d0        ;keep right before rts
  2506.         rts
  2507.  
  2508. ;Input a0 = Address of text string
  2509. ;
  2510. ;Result d0 = Length
  2511.  
  2512. ConvASCII:    clr.l    d0
  2513.         clr.l    d1
  2514.         cmp.b    #' ',(a0)
  2515.         bne    ConvASCII2
  2516.         add.l    #1,a0
  2517. ConvASCII2:    move.b    (a0),d1
  2518.         cmp.b    #'0',d1
  2519.         bcs    ConvASCII_OUT
  2520.         cmp.b    #'9',d1
  2521.         bhi    ConvASCII_OUT
  2522.         sub.b    #'0',d1
  2523.         push    d1/a0
  2524.         move.l    #10,d1
  2525.         lib    Utility,UMult32
  2526.         pull    d1/a0
  2527.         add.l    d1,d0
  2528.         add.l    #1,a0
  2529.         bra    ConvASCII2
  2530. ConvASCII_OUT:    rts
  2531.  
  2532. MakeCmdString:    lea.l    FileNameBuf3,a0
  2533.         lea.l    ULProgram,a4
  2534.         move.l    a4,a5
  2535.         add.l    #128,a5
  2536.         bsr    MCS1
  2537.  
  2538.         move.b    #' ',(a0)+
  2539.  
  2540.         lea.l    FileNameBuf2,a4
  2541.         move.l    a4,a5
  2542.         add.l    #128,a5
  2543.         bsr    MCS1
  2544.  
  2545. ;        lea.l    FileNameBuf3,a0        ;DEBUG
  2546. ;        bsr    Printer            ;DEBUG
  2547.         rts
  2548.  
  2549. MCS1:        move.b    (a4)+,(a0)+
  2550.         tst.b    (a4)
  2551.         beq    MCS2
  2552.         cmp.l    a4,a5
  2553.         bne    MCS1
  2554. MCS2:        rts
  2555.  
  2556. ;Error etc. messages
  2557.  
  2558. NoRDArgs:    lib    Dos,IoErr
  2559.         move.l    d0,d1
  2560.         clr.l    d2
  2561.         lib    Dos,PrintFault
  2562.         bra    ShutDown
  2563.  
  2564. NoUtility:    lea.l    NoUtiText1,a0
  2565.         bsr    Printer
  2566.         bra    ShutDown
  2567.  
  2568. NoDos:        add.l    #8,sp
  2569.         pull    d2-d7/a2-a6
  2570.         move.l    #RETURN_FAIL,d0
  2571.         rts
  2572.  
  2573. NotInteractive:    add.l    #8,sp
  2574.         lea.l    NotIntText1,a0
  2575.         bsr    Printer
  2576.         bra    ShutDown
  2577.  
  2578. NoMsgPort:    lea.l    NoMsgPortText1,a0
  2579.         bsr    Printer
  2580.         bra    ShutDown
  2581.  
  2582. NoIOReq:    lea.l    NoIOReqText1,a0
  2583.         bsr    Printer
  2584.         bra    ShutDown
  2585.  
  2586. NoSerial:    lea.l    NoSerialText1,a0
  2587.         bsr    Printer
  2588.         lea.l    SerDevNBuffer1,a0
  2589.         bsr    Printer
  2590.         lea.l    CRLFText1,a0
  2591.         bsr    Printer
  2592.         move.l    #-1,d0
  2593.         rts
  2594.  
  2595. Printer:    printa    a0,_stdout
  2596.         rts
  2597.  
  2598. PutChProc:    tst.b    d0
  2599.         beq    PutChProc_OUT
  2600.         move.b    d0,(a3)+
  2601. PutChProc_OUT:    rts
  2602.  
  2603. ;Structures
  2604.  
  2605. ;lib stuff
  2606.  
  2607.         libnames
  2608.  
  2609. ;Other stuff, part I
  2610.  
  2611. SRRPort:    dc.l    0
  2612. IORRequest:    dc.l    0
  2613. SWRPort:    dc.l    0
  2614. IOWRequest:    dc.l    0
  2615. OptPort:    dc.l    0
  2616. _stdout:    dc.l    0
  2617. _stdin:        dc.l    0
  2618. Sent:        dc.l    0            ;Count sent chars
  2619. Received:    dc.l    0            ;Count reveived chars
  2620. PrefsFile:    dc.l    0
  2621. RDArgs1:    dc.l    0
  2622. CLArray1:    dc.l    FileNameBuf1        ;Pointer to filename
  2623. OptPortName:    dc.l    0            ;Pointer to optional portname
  2624.  
  2625. ;Other stuff part II
  2626.  
  2627. OldLock:    dc.l    0        ;dir we started from
  2628. ULLock:        dc.l    0        ;uload dir
  2629. DLLock:        dc.l    0        ;dload dir
  2630. CaptureFile:    dc.l    0        ;Capture everything here..
  2631.  
  2632. EntrySelected1:    dc.b    0
  2633. EntrySelected2:    dc.b    0
  2634. EntrySelected3:    dc.b    0
  2635. EntrySelected4:    dc.b    0
  2636. EntrySelected5:    dc.b    0
  2637. EntrySelected6:    dc.b    0
  2638. EntrySelected7:    dc.b    0
  2639. EntrySelected8:    dc.b    0
  2640. EntrySelected9:    dc.b    0
  2641. EntrySelected0:    dc.b    0
  2642. ModifyMode:    dc.w    0    ;0=No, 1=Yes
  2643. CPAssignText:    dc.w    0
  2644.  
  2645. ;Serial device stuff
  2646.  
  2647. SerOpen:    dc.w    0
  2648.  
  2649. ;Strings, error
  2650.  
  2651. BreakText1:    dc.b    "***Break",13,10,0
  2652. NotIntText1:    dc.b    "ERROR: Please don't redirect input!",13,10,0
  2653. NoUtiText1:    dc.b    "ERROR: Couldn't open utility.library!",13,10,0
  2654. NoMsgPortText1:    dc.b    "ERROR: Couldn't get message port!",13,10,0
  2655. NoIOReqText1:    dc.b    "ERROR: Couldn't get SerialIOReq!",13,10,0
  2656. NoSerialText1:    dc.b    "ERROR: Couldn't open ",0
  2657. FileErrorText1:    dc.b    13,10,"ERROR: Couldn't open file: ",0
  2658. FileErrorText2:    dc.b    "ERROR: Couldn't read file!",13,10,0
  2659. FileErrorText3:    dc.b    "ERROR: Incorrect filetype!",13,10,0
  2660. FileErrorText4:    dc.b    "ERROR: Couldn't write to file!",13,10,0
  2661. NoULDLProgText1: dc.b    13,10,"ERROR: No transfer program specified!",13,10,0
  2662. NoULDirText1:    dc.b    13,10,"ERROR: Couldn't access upload directory!",13,10,0
  2663. NoDLDirText1:    dc.b    13,10,"ERROR: Couldn't access download directory!",13,10,0
  2664. CaptureErrorText1:    dc.b    13,10,"ERROR: Couldn't open capture!",13,10,0
  2665. CaptureErrorText2:    dc.b    13,10,"ERROR: Capture already open!",13,10,0
  2666.  
  2667. ;Strings
  2668.  
  2669. StartText1:    dc.b    "Welcome to ShellTerm. Use CTRL-P to get menu.",13,10,0
  2670.         ds.l    0
  2671. RPortText1:    dc.b    "ShellTerm_RPort",0
  2672. WPortText1:    dc.b    "ShellTerm_WPort",0
  2673.  
  2674. ;Main menu
  2675.  
  2676. MenuText1:    dc.b    13,10,"ShellTerm menu. Please choose item:",13,10
  2677.         dc.b    13,10,"(S) Statistics      (C) Clear statistics"
  2678.         dc.b    13,10,"(B) Send BREAK      (O) Send CTRL-P"
  2679.         dc.b    13,10,"(F) Reset font      (X) Clear screen"
  2680.         dc.b    13,10,"(R) Reset modem     (H) Hangup line"
  2681.         dc.b    13,10,"(+) Upload          (-) Download"
  2682.         dc.b    13,10,"(D) Dialer          (P) Preferences"
  2683.         dc.b    13,10,"(L) Open capture    (K) Close capture"
  2684.         dc.b    13,10,"(M) Execute command (?) Information",13,10
  2685.         dc.b    13,10,"(Q) Quit ShellTerm  (E) Exit menus",13,10
  2686.         dc.b    13,10,"Selection: ",0
  2687. ExecuteText1:    dc.b    "Execute",13,10
  2688.         dc.b    "Command to execute: ",0
  2689. InfoText1:    dc.b    "Information",13,10,0
  2690. BreakText2:    dc.b    "Break sent",13,10,0
  2691. CTRL_PText1:    dc.b    "CTRL-P sent",13,10,0
  2692. ExitText1:    dc.b    "Exit",13,10
  2693. TerminalText1:    dc.b    13,10,"Terminal mode active:",13,10,0
  2694. ResetFText1:    dc.b    "Reset font",13,10,0
  2695. QuitText1:    dc.b    "Quit",13,10,0
  2696. StatsText1:    dc.b    "Statistics:",13,10,0
  2697. StatsText2:    dc.b    "Statistics",13,10,13,10,0
  2698. DialerText1:    dc.b    "Dialer",13,10,0
  2699. PrefsText1:    dc.b    "Preferences",13,10,0
  2700. ULText1:    dc.b    "Upload program (SZ)",13,10
  2701.         dc.b    "Program name: ",0
  2702. ULText2:    dc.b    "Upload file",13,10
  2703.         dc.b    "File to upload: ",0
  2704. ULText3:    dc.b    "Uploading file, please wait...",13,10,0
  2705. ULText5:    dc.b    "Upload dir",13,10
  2706.         dc.b    "Directory: ",0
  2707. DLText1:    dc.b    "Download program (RZ)",13,10
  2708.         dc.b    "Program name: ",0
  2709. DLText2:    dc.b    "Downloading file, please wait...",13,10,0
  2710. DLText5:    dc.b    "Download dir",13,10
  2711.         dc.b    "Directory: ",0
  2712. OpenCaptureText1: dc.b    "Open capture",13,10
  2713.         dc.b    "Name of file: ",0
  2714. CloseCaptureText1: dc.b    "Close capture",13,10,0
  2715.  
  2716. ReceivedText1:    dc.b    "                            ",00,00,0    ;max of 4294967295
  2717. ;            "   4294967295 bytes received",CR,LF
  2718. SentText1:    dc.b    "                        ",00,00,0    ;max of 4294967295
  2719. ;            "   4294967295 bytes sent",CR,LF
  2720. fstrl1:        dc.b    "   %10.ld bytes received",13,10,0
  2721. fstrl2:        dc.b    "   %10.ld bytes sent",0
  2722. ClearText1:    dc.b    "Cleared",13,10,0
  2723. ClearText3:    dc.b    "Reset",13,10,0
  2724. CRLFText1:    dc.b    CR,LF,0
  2725. ResetText1:    dc.b    "Reset",13,10,0
  2726. ResetText2:    dc.b    "ATZ",13,10,0
  2727. HangUpText1:    dc.b    "Hangup",13,10,0
  2728. HangUpText2:    dc.b    "+++",0
  2729. HangUpText3:    dc.b    "ATH0",13,10,0
  2730. PlainText1:    dc.b    $9b,$30,$6d,$1b,$63
  2731. ClearSText1:    dc.b    $1B,$5B,$30,$3B,$30,$48,$1B,$5B,$4A,0
  2732.  
  2733. ;Preferences
  2734.  
  2735. PrefsText2:    dc.b    13,10,"ShellTerm preferences:",13,10
  2736.         dc.b    13,10,"(S)erial settings  (T)erminal settings"
  2737.         dc.b    13,10,"(R)eset settings   (V)iew settings"
  2738.         dc.b    13,10,"(L)oad prefs       (W)rite prefs"
  2739.         dc.b    13,10,"(N)ame prefsfile   (A)ssign CTRL-P"
  2740.         dc.b    13,10,"(+) Upload program (-) Download program"
  2741.         dc.b    13,10,"(U)pload dir       (D)ownload dir",13,10
  2742.         dc.b    13,10,"(M)ain menu        (E)xit menus",13,10
  2743.         dc.b    13,10,"Selection: ",0
  2744. ViewText1:    dc.b    "View settings",13,10,0
  2745. SpeedText11:    dc.b    "Serial settings",13,10,0
  2746. SpeedText13:    dc.b    "Speed",13,10,0
  2747. STerminalText1:    dc.b    "Terminal settings",13,10,0
  2748. LoadText1:    dc.b    "Load prefs",13,10,0
  2749. SaveText1:    dc.b    "Write prefs",13,10,0
  2750. AssignText1:    dc.b    "Assign CTRL-P",13,10,0
  2751. AssignText2:    dc.b    13,10,"Press key to assign CTRL-P to: ",0
  2752. EnterNText1:    dc.b    "Enter name",13,10,0
  2753. EnterNText2:    dc.b    13,10,"File name: ",0
  2754. DBitsText1:    dc.b    "Using 7 databits",13,10,0
  2755. DBitsText2:    dc.b    "Using 8 databits",13,10,0
  2756. DBitsText3:    dc.b    13,10,"ERROR: Couldn't set databits!",13,10,0
  2757. SBitsText1:    dc.b    "Using 1 stopbit",13,10,0
  2758. SBitsText2:    dc.b    "Using 2 stopbits",13,10,0
  2759. SBitsText3:    dc.b    13,10,"ERROR: Couldn't set stopbits!",13,10,0
  2760. CRTransText2:    dc.b    13,10,"(N)one, (S)trip, (A)dd LF: ",0
  2761. LFTransText2:    dc.b    13,10,"(N)one, (S)trip, (A)dd CR: ",0
  2762. AnyKeyText1:    dc.b    13,10,"Please press any key: ",0
  2763. NoneText1:    dc.b    "None",13,10,0
  2764. StripText1:    dc.b    "Strip",13,10,0
  2765. AddText1:    dc.b    "Add",13,10,0
  2766.  
  2767. STerminalText2:    dc.b    13,10,"Terminal settings:",13,10
  2768.         dc.b    13,10,"OUT: (1) CR translate   (2) LF translate"
  2769.         dc.b    13,10,"IN:  (3) CR translate   (4) LF translate"
  2770.         dc.b    13,10,"     (L)ocal echo       (S)wap DEL & BS"
  2771.         dc.b    13,10,"     (A)nsi codes       (C)ursor remap",13,10
  2772.         dc.b    13,10,"(M)ain menu   (-) Previous menu   (E)xit menus",13,10
  2773.         dc.b    13,10,"Selection: ",0
  2774. CRTransText1:    dc.b    "CR translate (OUT)",13,10,0
  2775. LFTransText1:    dc.b    "LF translate (OUT)",13,10,0
  2776. CRTransText3:    dc.b    "CR translate (IN)",13,10,0
  2777. LFTransText3:    dc.b    "LF translate (IN)",13,10,0
  2778. EchoText1:    dc.b    "Local echo enabled",13,10,0
  2779. EchoText2:    dc.b    "Local echo disabled",13,10,0
  2780. SwapText1:    dc.b    "BS & DEL swapping enabled",13,10,0
  2781. SwapText2:    dc.b    "BS & DEL swapping disabled",13,10,0
  2782. ANSIText1:    dc.b    "ANSI mode on",13,10,0
  2783. ANSIText2:    dc.b    "ANSI mode off",13,10,0
  2784. CRemapText1:    dc.b    "Cursor remap on",13,10,0
  2785. CRemapText2:    dc.b    "Cursor remap off",13,10,0
  2786.  
  2787. CurrentText1:    dc.b    13,10,"Current settings: Speed (",0
  2788. CurrentText2:    dc.b    "), Local echo (",0
  2789. CurrentText3:    dc.b    "                  CR xlate out (",0
  2790. CurrentText4:    dc.b    "), LF xlate out (",0
  2791. CurrentText5:    dc.b    "                  CR xlate in (",0
  2792. CurrentText6:    dc.b    "), LR xlate in (",0
  2793. CurrentText7:    dc.b    ")",13,10,0
  2794. CurrentText8:    dc.b    "                  Databits (",0
  2795. CurrentText9:    dc.b    "), Stopbits (",0
  2796. CurrentText9.1:    dc.b    "                  Swap BS & DEL (",0
  2797. CurrentText9.11: dc.b    "), ANSI mode (",0
  2798. CurrentText9.12: dc.b    "                  Remap cursor keys (",0
  2799. CurrentText9.2:    dc.b    13,10,"CTRL-P assigned to ASCII: ",0
  2800. CurrentText9.3:    dc.b    13,10,"Upload program  : ",0
  2801. CurrentText9.4:    dc.b    13,10,"Download program: ",0
  2802. CurrentText9.5:    dc.b    13,10,"Upload dir      : ",0
  2803. CurrentText9.6:    dc.b    13,10,"Download dir    : ",0
  2804. CurrentText10:    dc.b    13,10,"Device name: ",0
  2805. CurrentText11:    dc.b    13,10,"Unit number: ",0
  2806. CurrentText12:    dcb.b    14,0
  2807. CurrentText13:    dc.b    13,10,"Prefs file : ",0
  2808. NAText1:    dc.b    "N/A",0
  2809. DefText1:    dc.b    "Default",0
  2810. StarText1:    dc.b    "*",0
  2811. SpaceText1:    dc.b    " ",0
  2812. NText1:        dc.b    "N",0
  2813. SText1:        dc.b    "S",0
  2814. AText1:        dc.b    "A",0
  2815. OneText1:    dc.b    "1",0
  2816. TwoText1:    dc.b    "2",0
  2817. SevenText1:    dc.b    "7",0
  2818. EightText1:    dc.b    "8",0
  2819. fstrl4:        dc.b    "%d",0
  2820.  
  2821. ;Speed prefs
  2822.  
  2823. SpeedText1:    dc.b    13,10,"Serial settings:",13,10
  2824.         dc.b    13,10,"(1) 110 bps     (2) 300 bps"
  2825.         dc.b    13,10,"(3) 1200 bps    (4) 2400 bps"
  2826.         dc.b    13,10,"(5) 4800 bps    (6) 9600 bps"
  2827.         dc.b    13,10,"(7) 19 200 bps  (8) 38 400 bps"
  2828.         dc.b    13,10,"(9) 57 600 bps  (0) 115 200 bps"
  2829.         dc.b    13,10,"(N)ame & Unit   (R)e-open"
  2830.         dc.b    13,10,"(D)atabits      (S)topbits",13,10
  2831.         dc.b    13,10,"(M)ain menu   (-) Previous menu   (E)xit menus",13,10
  2832.         dc.b    13,10,"Selection: ",0
  2833. SpeedText12:    dc.b    13,10,"ERROR: Couldn't set that speed. Please reselect!",13,10,0
  2834. SerSetText1:    dc.b    13,10,"ERROR: Couldn't set serial parameters!",13,10,0
  2835. fstrl3:        dc.b    "%ld",0
  2836.         ds.w    0
  2837. CTRLPASCII:    dc.b    0,0,0,0,0,0
  2838. SpeedText90:    dc.b    0,0,0,0,0,0,0,0
  2839. NameText1:    dc.b    "Set device unit & name",13,10,0
  2840. NameText2:    dc.b    13,10,"Device name: ",0
  2841. NameText3:    dc.b    13,10,"Unit number: ",0
  2842. ReOpenText1:    dc.b    "Re-open device",13,10,0
  2843.  
  2844. ;Dialer stuff
  2845.  
  2846. DialerText2:    dc.b    13,10,"Auto-dialer (phonebook)",13,10
  2847.         dc.b    13,10,"Entries:",13,10,13,10,0
  2848. PrefixText1:    dc.b    "Prefix: ",0
  2849. EntryText1:    dc.b    "1) ",0
  2850. EntryText2:    dc.b    "2) ",0
  2851. EntryText3:    dc.b    "3) ",0
  2852. EntryText4:    dc.b    "4) ",0
  2853. EntryText5:    dc.b    "5) ",0
  2854. EntryText6:    dc.b    "6) ",0
  2855. EntryText7:    dc.b    "7) ",0
  2856. EntryText8:    dc.b    "8) ",0
  2857. EntryText9:    dc.b    "9) ",0
  2858. EntryText10:    dc.b    "0) ",0
  2859. DialerText3:    dc.b    13,10,"(0-9) Un/select entry  (R)elist numbers"
  2860.         dc.b    13,10,"  (S)ingle dial        (D)ial list"
  2861.         dc.b    13,10,"  (C)lear list         (A)ll"
  2862.         dc.b    13,10,"Ed(I)t mode            (P)refix",13,10
  2863.         dc.b    13,10,"  (M)ain menu          (E)xit menus",13,10
  2864. SelectionText1:    dc.b    13,10,"Selection: ",0
  2865. DialText1:    dc.b    "Dial list",13,10,0
  2866. MainMenuText1:    dc.b    "Main menu",13,10,0
  2867. SingleText1:    dc.b    "Dial number",13,10,0
  2868. SingleText2:    dc.b    "Number to dial: ",0
  2869. RelistText1:    dc.b    "Relist",13,10,13,10,0
  2870. EntryTextXIV:    dc.b    "Entry",13,10,0
  2871. ClearText2:    dc.b    "Clear",13,10,0
  2872. AllText1:    dc.b    "All",13,10,0
  2873. HelpText1:    dc.b    "Help",13,10,0
  2874. ModifyText1:    dc.b    "Edit mode on",13,10,0
  2875. ModifyText2:    dc.b    "Edit mode off",13,10,0
  2876. EditEntryText1:    dc.b    "Edit entry",13,10,0
  2877. EditEntryText2:    dc.b    13,10,"Enter number: ",0
  2878. EditEntryText3:    dc.b    "Edit prefix",13,10,0
  2879. EditEntryText4:    dc.b    13,10,"Enter prefix: ",0
  2880. DialingText1:    dc.b    13,10,"Dialing: ",0
  2881. DialText2:    dc.b    13,10,"[Space] to skip, [Backspace] to remove this entry, [Escape] to quit",13,10,0
  2882. ConnectText1:    dc.b    "Connection established",13,10,0
  2883. BusyText1:    dc.b    "Busy",13,10,0
  2884. SkippedText1:    dc.b    "Skipping entry",13,10,0
  2885. CancelledText1:    dc.b    "Quitting",13,10,0
  2886. RemoveText1:    dc.b    "Removing this entry",13,10,0
  2887. EmptyText1:    dc.b    13,10,"List is empty",13,10,0
  2888. SelectedText1:    dc.b    13,10,"Entries selected:",13,10,0
  2889. SelectText1:    dc.b    "1 (",0
  2890. SelectText2:    dc.b    "2 (",0
  2891. SelectText3:    dc.b    "3 (",0
  2892. SelectText4:    dc.b    "4 (",0
  2893. SelectText5:    dc.b    "5 (",0
  2894. SelectText6:    dc.b    "6 (",0
  2895. SelectText7:    dc.b    "7 (",0
  2896. SelectText8:    dc.b    "8 (",0
  2897. SelectText9:    dc.b    "9 (",0
  2898. SelectText0:    dc.b    "0 (",0
  2899. SelectText11:    dc.b    "*) ",0
  2900. SelectText12:    dc.b    " ) ",0
  2901. SelectText13:    dc.b    "*)",0
  2902. SelectText14:    dc.b    " )",0
  2903.  
  2904. ;Strings, names
  2905.  
  2906. CLTemplate1:    dc.b    "FROM,PORT/K",0
  2907. STVersion:    dc.b    "$VER: ShellTerm 1.17 (25.03.93) (C)opyright Tomi Blinnikka 1993",0
  2908. AuthorText1:    dc.b    13,10,"Name          : ShellTerm",13,10
  2909.         dc.b    "Version       : 1.17 (25.03.93)",13,10
  2910.         dc.b    "Author        : Tomi Blinnikka",13,10
  2911. ;        dc.b    "NOTICE        : BETA TESTER VERSION",13,10
  2912. ;        dc.b    "Registered to : Mika Henttinen",13,10
  2913.         dc.b    13,10,"(C)opyright Tomi Blinnikka 1993",13,10,0
  2914.         ds.l    0
  2915.  
  2916. ;Buffers
  2917.  
  2918. Buffer1:    dcb.b    2,0        ;For writes to serial (read from CLI)
  2919. Buffer2:    dcb.b    2,0        ;For reads
  2920. Buffer3:    dcb.b    BUFLEN,0    ;For reads from serial
  2921. Buffer4:    dcb.b    BUFLEN*2,0    ;For writes to CLI
  2922.  
  2923. DialBuffer1:    dcb.b    ENTRYLENGTH,0    ;for single dial/serial unit number :)
  2924.  
  2925. FileNameBuf1:    dc.b    "S:ShellTerm.PREFS"
  2926.         dcb.b    128-17,0
  2927. FileNameBuf2:    dcb.b    128,0        ;File to UL/capture filename
  2928. FileNameBuf3:    dcb.b    2*128,0        ;CMD string with arguments
  2929.  
  2930. PREFS_START:
  2931.  
  2932. PrefsStart:    dc.b    "ST"
  2933. SerDevNBuffer1:    dc.b    "serial.device"
  2934.         dcb.b    32-13,0        ;device name
  2935. SerUnit:    dc.l    0
  2936. Speed:        dc.l    9600
  2937. LocalEcho:    dc.w    0        ;(0=no echo, 1=echo)
  2938. CRTranslate:    dc.b    0        ;0=none, 1=strip, 2=add LF
  2939. LFTranslate:    dc.b    0        ;0=none, 1=strip, 2=add CR
  2940. CRTranslateIn:    dc.b    0        ;0=none, 1=strip, 2=add LF
  2941. LFTranslateIn:    dc.b    0        ;0=none, 1=strip, 2=add CR
  2942. DataBits:    dc.b    8
  2943. StopBits:    dc.b    1
  2944. SwapBSDEL:    dc.b    0        ;1=yes
  2945. UseANSI:    dc.b    0        ;1=yes
  2946. CPAssign:    dc.b    0        ;key to assign CTRL-P to
  2947. CursorRemap:    dc.b    0        ;remap cursor keys
  2948.  
  2949. ULProgram:    dcb.b    128,0        ;SZ
  2950. DLProgram:    dcb.b    128,0        ;RZ
  2951. ULDir:        dcb.b    128,0        ;SZ
  2952. DLDir:        dcb.b    128,0        ;RZ
  2953. DialPrefix:    dc.b    "ATDT"        ;dial prefix
  2954.         dcb.b    16-4,0
  2955. Entry1:        dcb.b    ENTRYLENGTH,0    ;Entry 1
  2956. Entry2:        dcb.b    ENTRYLENGTH,0    ;Entry 2
  2957. Entry3:        dcb.b    ENTRYLENGTH,0    ;Entry 3
  2958. Entry4:        dcb.b    ENTRYLENGTH,0    ;Entry 4
  2959. Entry5:        dcb.b    ENTRYLENGTH,0    ;Entry 5
  2960. Entry6:        dcb.b    ENTRYLENGTH,0    ;Entry 6
  2961. Entry7:        dcb.b    ENTRYLENGTH,0    ;Entry 7
  2962. Entry8:        dcb.b    ENTRYLENGTH,0    ;Entry 8
  2963. Entry9:        dcb.b    ENTRYLENGTH,0    ;Entry 9
  2964. Entry10:    dcb.b    ENTRYLENGTH,0    ;Entry 10
  2965.  
  2966. PREFS_END:    dc.l    0,0
  2967.  
  2968. PrefsSize:    EQU    (PREFS_END-PREFS_START)
  2969.         end
  2970.  
  2971.  
  2972.  
  2973. ClearSer:    move.l    IORRequest,a1
  2974.         lib    Exec,CheckIO
  2975.         tst.l    d0
  2976.         beq    ClearSer1
  2977.         move.l    IORRequest,a1
  2978.         lib    Exec,WaitIO
  2979.         rts
  2980.  
  2981. ClearSer1:    move.l    IORRequest,a1
  2982.         ABORTIO
  2983.         move.l    IORRequest,a1
  2984.         lib    Exec,WaitIO
  2985.         rts
  2986.